在ES6中,已经使用let代替var
那么为什么呢?即let的优点有哪些:
1. 变量不能重复声明
2. 变量不存在变量提升机制
3. let是块级作用域,即'局部变量'
4. 但是不影响到作用域链,即函数体可以使用let定义的变量
疑惑:
变量提升机制:可以在定义变量前,提前使用变量,在ES6之前,代码很混乱的
块级作用域:包括静态代码块、函数、eval
eval:在ES5严格模式下才有的作用域,eval是一个特殊的函数,它可以将传入的字符串当作js代码执行,但是不建议使用eval函数,因为运行性能差,必须经过js解析器,并且不会被js引擎优化。
严格模式:是一种具有限制性的js模式,浏览器会以更加严格的方式对代码进行检测和执行。