let
- let关键字用于声明变量
let声明的变量只在所处的块级作用域有效(大括号外无效)
作用:
1. 防止内部变量覆盖外部变量
2. 防止循环变量变成全局变量
if(true){
let a = 10;
let b = 10;
console.log(a); // 10
}
console.log(b) // b is not defined
#使用var关键字声明的变量是不具备块级作用域特性的
if(true){
let a = 100;
var b = 100;
}
console.log(a); // a is not defined
console.log(b); // 100
- let关键字不存在变量提升
console.log(a);
let a = 100;
// a is not defined
- let关键字有暂时性死区特性
一旦使用let声明变量,变量就会与大括号进行绑定,生成“死区”
var tmp = 123;
if(true){
console.log(tmp); // tmp is not defined
let tmp = 'abc';
}
#if语句内的tmp与外部的tmp没有关系