var和let的区别

let关键字用来声明变量,let声明变量的特点:

1.不允许重复声明变量

2.块级作用域(局部变量)

3.不存在变量提升

4.不影响作用域链

区别:
1.var可以重复声明变量,如果用let重复声明变量会报错

2.var存在变量提升:就是在变量创建之前使用(输出的是undefined)

而let不存在变量提升。

示例:修改元素的背景颜色:

for (var   i = 0 ; i < items . length ; i ++ ) {
        items [ i ]. onclick = function () {
                items [ i ]. style . background = 'pink' ;
}
当用var声明变量时,用上述方法改变背景颜色时会报错,但用let声明i就不会报错。
应为var是全局变量,经过循环之后下标变成了3,超过了数组的长度就会报错 我们要明白的是当我们点击的时候,这个i是哪个值, 使用var相当于是:
 { var i = 0; }
 { var i = 1; }
 { var i = 2; }
 { var i = 3; }
i=3把前面的覆盖掉。
而let是局部变量, 使用let相当于是:
 { let i = 0; }
 { let i = 1; }
 { let i = 2; }
 { let i = 3; }
 由于let声明的是局部变量,每一个保持着原来的值 ,点击事件调用的时候拿到的是对应的i。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值