一、let const
1.1 let 局部声明 不允许变量提升(声明前使用) 不允许同作用域重定义 新增块级作用域
for (let i = 0; i < 3; i++) { // for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
错误示范:
1. var tmp = new Date();
function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
}
f(); // undefined 内层变量可能会覆盖外层变量。
2. var s = 'hello';
for (var i = 0; i < s.length; i++) {
console.log(s[i]);
}
console.log(i); // 5 用来计数的循环变量泄露为全局变量。
ES6的块级作用域
// IIFE 写法 有了块级作用域 广泛应用的立即执行函数表达式(IIFE)不再必要了。
(function () {
var tmp = ...;
...
}());
// 块级作用域写法
{
let tmp = ...;
...
}
应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。
1.2 const一旦声明变量,就必须立即初始化,否则会报错
ES6 新特性
最新推荐文章于 2023-03-24 11:22:32 发布