let声明

 1 <script>
 2     /**
 3      * es6 let 练习
 4      * 生效范围:块级代码代码内。
 5      */
 6     // {
 7     //     let a=2;
 8     //     var c=2;
 9     // }
10     // console.log(c);//全局变量
11     // console.log(a);//undefined
12 //    for循环内适用let 变量作用范围只在for循环体内
13 //     for(let i=0;i<2;i++){
14 //         console.log(i)
15 //     }
16 //     console.log(i);//undefined
17 //在for循环里 let变量 保存当时的值 不同于var
18     let arr=[];
19     for(let i=0;i<4;i++){
20         arr[i]= ()=>{
21             console.log(i);
22         }
23     }
24     arr[0]();//0
25     arr[1]();//1
26     let arrvar=[];
27     for(var i=0;i<4;i++){
28         arrvar[i]=()=>{
29             console.log(i)
30         }
31     }
32     arr[0]();//都是0
33     arr[1]();//1
34     /**
35      * 1、在for循环中,let声明的变量都是新的变量,都在本轮有效,在新一轮都是新的值。在每次循环中js引擎都会记录上一次的变量值,以便计算本轮的值。
36      *
37      * @type {NodeListOf<HTMLElementTagNameMap[string]>}
38      */
39     let btns=document.querySelectorAll("button");
40     for(let i=0;i<btns.length;i++){
41         btns[i].addEventListener('click',ev => {//注意let声明的i是每次循环的i都是新的变量。所有在事件触发的时候i的值 是当时循环的值。而不是最后的值。
42             alert(i);
43         })
44     }
45     let divs=document.querySelectorAll("div");
46     for(var  i=0;i<divs.length;i++){
47         divs[i].addEventListener('click',ev => {//需要注意 在调用事件函数的的i已经是divs.lenth的值。因为此时i已经不满足循环条件
48             alert(i);
49         })
50     }
51     /**
52      * 1、在循环变量中是父作用域而下面的块级标签是子作用域。
53      */
54     for(let i=0;i<5;i++){
55         let i='cc';//注意此时的是重新声明i变量!
56         console.log(i);
57     }
58     /**
59      * var声明的变量都是都有变量提升的,在调用未声明(var)的变量的时候,为undefined
60      * let 不存在声明变量提升,在调用未声明的变量的时候,会报错
61      */
62     console.log(k);
63     var k;
64     console.log(m);
65     let m=2;
66 </script>

 

转载于:https://www.cnblogs.com/evilliu/p/10787136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值