let和var的区别
- 通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
- 但是直接用let声明变量不赋值是会打印undefined,还是初始化了,只是let声明放在赋值之后,let声明会提前但不会初始化
- let a; alert(a);//值为undefined alert b;//会报错 let b
- let不允许在相同作用域内,重复声明同一个变量。
- 只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的,尽管代码块外也存在相同全局变量。
- let : 变量只能声明一次
- var : 变量可以多次声明
for(var i=0;i<5;i++){ setTimeout(function(){ console.log("var:" + i); }) } // let for(let i=0;i<5;i++){ setTimeout(function(){ console.log("let" + i); }) }

浙公网安备 33010602011771号