let Posted on 2018-08-10 In ECMAScript let 声明的变量在代码块内有效1234567var a [];for (let i = 0; i < 10; i++) { a[i] = function() { console.log(i); };}a[6](); //6 不存在变量提升var 命令的变量可以在声明之前使用,值为 undefined 暂时性死区在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。TDZ(temporal dead zone) 12345var temp = 123if (true) { temp = "abc" //ReferenceError let temp} 有些死区是不易发现的 12345function bar(x = y, y = 2) { //y is not defined return [x, y]}let x = x //ReferenceError: x is not defined 不允许重复声明1234function foo() { var a let a}