-
首先javascript与ECMAscript的关系是:前者是后者的规格(标准),后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。平常所说的JavaScript实现是由ECMAScript和BOM ,DOM组成的。在日常场合,这两个词是可以互换的。
到这里,我们就知道为什么要学ES6 (ES2015)啦~ -
关于ES6最常用的特性:
- let,
- const,
- class,
- extends,
- super,
- arrow functions,
- template string,
- destructuring,
- default,
- rest arguments
共计10个
唔~偷个懒(先掌握前两个……)
let,const用法(声明变量)
举个栗子:
var name = 'zach'
while (true) {
var name = 'obama'
console.log(name) //obama
break
}
console.log(name) //obama
上述结果,内层变量覆盖外层变量,是因为在ES5中只有全局作用域和函数作用域,没有块级作用域。
在ES6中,let为javascript新增了块级作用域,用它声明的变量只有在let命令所在的代码块才生效。
let name = 'zach'
while (true) {
let name = 'obama'
console.log(name) //obama
break
}
console.log(name) //zach
除此之外,var带来的不便还有循环计数的变量泄露为全局变量,如:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10
对比之下
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
其实有个疑问,关于如下两个例子:
图片.png 图片.png这结果真是出乎我的意料啊,我本以为用let来定义,此时会输出undefinded呢~~~~~~~~~~唔~~~~~~~~
网友评论