ES6 新特性summary

来源:互联网 发布:geo数据挖掘套路 编辑:程序博客网 时间:2024/06/07 19:31
  1. let声明的变量只在它所在的代码块有效。for循环的计数器i,就很合适使用let。i只在for循环体内有效。只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var a = [];for (var i = 0; i < 10; i++) {  a[i] = function () {    console.log(i);  };}a[6]();//输出10var a = [];for (let i = 0; i < 10; i++) {  a[i] = function () {    console.log(i);  };}a[6]();//输出6---------------for (let i = 0; i < 3; i++) {  console.log(i);//ReferenceError 报错  let i = 'abc';}因为,只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
  1. 如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
if (true) {  // TDZ开始  tmp = 'abc'; // ReferenceError  console.log(tmp); // ReferenceError  let tmp; // TDZ结束  console.log(tmp); // undefined  tmp = 123;  console.log(tmp); // 123}**总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。**
原创粉丝点击