let关键字
众所周知,JavaScript有一个非常坑的设定,就是没有块级作用域。这里坑的意思和很多大家熟悉的类C语言设定不一样。
#include<stdio.h>
int main(){
for(int i=0; i<10; i++){
printf("%d\n",i);
}
printf("%d\n",i);
return 0;
}
在C中这样写你会发现你连编译都过不去。因为C语言中封闭的花括号创造了一个作用域。就像这个花括号整了个盒子把 i 装起来不让外面的人用。外面的 printf 要读取 i 的值自然是找不到变量 i 的。
但在JavaScript中就不一样了。
for(var i = 0; i<10; i++){ } console.log(i);
完全没得问题,执行的非常流畅。说明花括号没造个盒子把 i 给藏起来。
有时候,我们还是希望花括号去造个盒子把 i 给装起来的,这个时候 let 关键字就起作用了。
见证奇迹的时刻到了:
报错了!!!
这样没有块级作用域的问题就解决了。