ES6笔记(一):ES6所改良的javascript“缺陷”   块级作用域 ES5没有块级作用域,只有全局作用域和函数作用域,由于这一点,变量的作用域甚广,所以一进入函数就要马上将它创建出来.这就造成了所谓的变量提升. ES5的“变量提升”这一特性往往一不小心就会造成一下错误: 内层变量覆盖外层变量 var tmp = new Date(); function f() { console.log(tmp); if (false) { //执行则undefined var tmp = "hell…
块级作用域 ES5没有块级作用域,只有全局作用域和函数作用域,由于这一点,变量的作用域甚广,所以一进入函数就要马上将它创建出来.这就造成了所谓的变量提升. ES5的"变量提升"这一特性往往一不小心就会造成一下错误: 内层变量覆盖外层变量 var tmp = new Date(); function f() { console.log(tmp); if (false) { //执行则undefined var tmp = "hello world"; } } 变量泄露…
原网址:http://huangxuan.me/2015/09/22/js-version/ JavaScript 有着很奇怪的命名史. 1995 年,它作为网景浏览器(Netscape Navigator)的一部分首次发布,网景给这个新语言命名为 LiveScript.一年后,为了搭上当时媒体热炒 Java 的顺风车,临时改名为了 JavaScript (当然,Java 和 JavaScript 的关系,就和雷锋和雷锋塔一样 —— 并没有什么关系) 歪果仁的笑话怎么一点都不好笑 译者注:wik…
1.let A:let关键字:将变量绑定到所在的任意作用域 function process(){ //do something } //在这个块中定义的内容完事就可以销毁 { let someReallyBigData = {…………}; process(someReallyBigData); } vra btn = document.getElementById("my_button"); btn.addEventListener('click',function click(ev…
http://es6.ruanyifeng.com/ ECMAScript 6 https://frankfang.github.io/es-6-tutorials/ ES 6 新特性列表 2017-12-29 http://www.runoob.com/w3cnote/es6-concise-tutorial.html ESMAScript 6简明教程 2018-1-8 https://juejin.im/post/5991549af265da3e345f6e6d ES6 变量声明与赋值:值传…
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 将es6.es7语法降级为es5 需要通过 babel JavaScript编译器. 安装: npm i babel-loader.@babel/core.@babel/preset-env plugins: @babel/plugin-proposal-decorators --save-dev @babel/plugin-proposal-class-properties --save-dev @babel/…
这里简要记录一下对自己感触比较深的几个知识点,将核心的应用投放于实际的项目之中,提供代码的可维护性. 一.let和const { // let声明的变量只在let命令所在的代码块内有效 let a = 1; var b = 2; } console.log(a); // 报错: ReferenceError: a is not defined console.log(b); // for循环的技术器就很适合let命令 for (let i = 0; i < 3; i++) { console.l…
ES6的很多特性都跟Generator扯上关系,而且实际用处比较广, 包含了任何需要异步的模块, 比如ajax, filesystem, 或者数组对象遍历等都可以用到: Generator的使用: Generator函数和普通的函数区别有两个, 1:function和函数名之间有一个*号, 2:函数体内部使用了yield表达式:比如这样: function* gen() { "; " } 这个玩意儿如果运行的话,会返回一个Iterator实例, 然后再执行Iterator实例的next…
Map对象 Map对象是一种有对应 键/值 对的对象, JS的Object也是 键/值 对的对象 : ES6中Map相对于Object对象有几个区别: 1:Object对象有原型, 也就是说他有默认的key值在对象上面, 除非我们使用Object.create(null)创建一个没有原型的对象: 2:在Object对象中, 只能把String和Symbol作为key值, 但是在Map中,key值可以是任何基本类型(String, Number, Boolean, undefined, NaN..…
ES6提供了新的数据结构Set,Set对象不是数组, 可以用来保存对象或者基本类型, 所有保存的值都是唯一的, chrome浏览器>38和FF>13,以及nodeJS,对Set支持良好, 以下的一些代码,都可以拷贝到控制台直接运行哦: 创建Set实例的基本方法为: let set = new Set(); //或者 new Set(null); console.log(set); 或者这样: let ,,,,,,,]); console.log( Array.from(set) ); //输出…