01-let 和const
let与var比的特点
- 暂时性死区
- 不存在变量提升
- 不允许重复声明
- 构成了块级作用域
var tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); // undefined
上述代码输出undefined的原因是函数f内的tmp,发生了变量提升,导致输出undefined
let其实是为ES6新增的块级作用域,用let声明的变量只在用{}围住的范围内起作用
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
let块级作用域的出现使得匿名立即执行函数不在有必要
// IIFE 写法
(function () {
var tmp = ...;
...
}());
// 块级作用域写法
{
let tmp = ...;
...
}
const
- const声明一个只读的常量,不可修改,修改会报错。且const变量一旦声明,就必须赋值,否则会报错。

浙公网安备 33010602011771号