let允许声明一个作用域在块级的表达式、变量或者语句
在function中局部变量推荐使用let变量 避免变量名冲突
let声明的变量只在其块或子块中起作用 与var不同的是 var声明的变量作用域是整个封闭函数
(1)
function( ){
var x=0;
if ( true ) {
var x=2;
console.log(x); //输出2
}
console.log(x); //输出2
}
因为var声明的变量将会作用与整个封闭函数
执行var x=2代码行后x的值就固定为2
直到function块结束
(2)
function( ){
var x=0;
if ( true ) {
let x=2;
console.log(x); //输出2
}
console.log(x); //输出0
}
let声明的变量x作用域仅局限在if块中 在if块中输出为2
当if块执行完毕后 外部的var x=0作用在整个function函数中 所以x的值为0
注:还需要注意const关键字 使用const声明的变量 一旦被设定赋值就不可以再被更改