一些与ES6相关的知识点

  1. 首先javascript与ECMAscript的关系是:前者是后者的规格(标准),后者是前者的一种实现(另外的ECMAScript方言还有Jscript和ActionScript)。平常所说的JavaScript实现是由ECMAScript和BOM ,DOM组成的。在日常场合,这两个词是可以互换的。
    到这里,我们就知道为什么要学ES6 (ES2015)啦~

  2. 关于ES6最常用的特性:

  • let,
  • const,
  • class,
  • extends,
  • super,
  • arrow functions,
  • template string,
  • destructuring,
  • default,
  • rest arguments
    共计10个

唔~偷个懒(先掌握前两个……)

let,const用法(声明变量)

举个栗子:

代码引自:http://www.jianshu.com/p/ebfeb687eb70

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

其实有个疑问,关于如下两个例子:

一些与ES6相关的知识点_第1张图片
图片.png

一些与ES6相关的知识点_第2张图片
图片.png

这结果真是出乎我的意料啊,我本以为用let来定义,此时会输出undefinded呢~~~~~~~~~~ ~~~~~~~~

你可能感兴趣的:(一些与ES6相关的知识点)