let 和 var 的区别笔记

参考文章:阮一峰   ECMAScript 6 入门

 

ES6中新增加了 let  声明,它跟 var  的区别如下:

1、作用域不同,let  只在代码块中有效

{
   var a = '123';
   let  b = '456';
}

a; //'123'
b; //ReferenceError: b is not defined.

2、建议在 for 循环中使用 let 申明变量

for (let i = 0; i < 10; i++) {
  // ...
}

console.log(i);
// ReferenceError: i is not defined

如果你用的是 var,那么上面的结果就是10 了。

3、for 循环需要注意的是,设置循环的部分是一个父级作用域,循环体内部是一个单独的子作用域。

for (let i = 0; i < 3; i++) {
  let i = 'abc';
  console.log(i);
}
// abc
// abc
// abc

这个例子很好佐证了循环体内部的变量 i 和 循环变量 i 不是同一个作用域。

posted @ 2018-03-29 21:46  lishidefengchen  阅读(180)  评论(0编辑  收藏  举报