1.Let块作用域
以{开始,以}结束,为一块。
let定义的变量可以在自己的域中使用,也可在子域中使用
外层作用域无法读取内层作用域的变量
内层作用域可以定义外层作用域的同名变量。
1 { 2 3 let a=10; 4 5 console.log(a); 6 7 { 8 9 console.log(a) 10 11 { 12 13 let b=20; 14 15 console.log(b); 16 17 } 18 19 console.log(b) 20 21 } 22 23 }
2.for循环也是一个块作用域
for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
1 var arr=[]; 2 3 for(var i = 0;i<5;i++){ 4 5 arr[i]=function(){ 6 7 console.log(i) 8 9 } 10 11 } 12 13 arr[0]();//5 14 15 arr[1]();//5 16 17 arr[2]();//5 18 19 20 21 22 23 var arr=[]; 24 25 for(let i = 0;i<5;i++){ 26 27 arr[i]=function(){ 28 29 console.log(i) 30 31 } 32 33 } 34 35 arr[0]();//0 36 37 arr[1]();//1 38 39 arr[2]();//2
3.不允许重复声明
let不允许在相同作用域内,重复声明同一个变量
浙公网安备 33010602011771号