let块级作用域 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b for循环的计数器,就很合适使用let命令(防止i泄露为全局变量) for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined 下面的代码如果使用var,最后输出的是10. var a = []; for (var i =…
ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined.这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用. 为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错. var 声明的变量可以在声明之前使用,是undifind,存在变量提升现象,let 声明的…
1.let命令 基本用法 let只在命令所在的代码块内(花括号内)有效. for循环的计数器,就很合适使用let命令. //var var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 //let var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i)…
其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' } console.log(color) } demo(1) // red js引擎会将上面的 demo1 函数修改成下面的样子: function demo2(v){ var color; if(v){ color='red' } ... } 解决方法 将 var 声明改为 let 声明 func…