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 
25for(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不允许在相同作用域内,重复声明同一个变量

posted on 2020-05-04 17:37  songqiyu  阅读(99)  评论(0)    收藏  举报