1、let可以形成块级作用域,在es6之前javascript只有函数作用域,没有块级作用域。在es6之前实现块级作用域:
2、可以看到通过一个立即执行函数表达式,我们实现了一个局部作用域或者块级作用域,但是有了let之后就不需要写这样的代码了,代码修改如下。
3、执行结果: 可以看到两者实现的效果是一样的。
4、下面看一道经典面试题:
5、执行结果为:每隔200ms依次打印5,一共打印5次。
6、依次输出0,1,2,3,4
7、let可以生成局部作用域
8、执行结果为: 依次输出0,1,2,3,4
原因就在于for循环每次执行都是一个独立块作用域,而用let声明的变量传到for循环体的作用域后,不会发生变化,不受外界影响
9、const是用来定义常量的,常量定义之后是不允许改变的。看代码:
10、错误提示为:Uncaught TypeError: Assignment to constant variable.意思是常量已经赋值了
11、执行结果为: 错误提示为:Uncaught SyntaxError: Missing initializer in const declaration。意思是缺少初识值。