前端

let,const

2018-03-31  本文已影响3人  佛系跳伞运动员

let const

let


1.块级作用域

// 块级作用域外泄
var a = {test: '123', test1: '345'};
for (var item in a) {
    console.log(item);
}
console.log(item);//可以读出item
// 解决方法ES6中的let关键字
var a = {test: '123', test1: '345'};
for (let item in a) {
    console.log(item);
}
console.log(item);//块级作用域外不可以读出item

// 事实上babel会将上面语句转换为:
var a = {test: '123', test1: '345'};
for (var _item in a) {
    console.log(_item);
}
console.log(item);

2.不存在变量提升

console.log(foo); // 输出undefined
var foo = 2;
// 相当于
var foo;
console.log(foo); // 输出undefined
foo = 2;
console.log(bar); // 报错ReferenceError
let bar = 2;
//块级作用域与let变量声明之间的这一块就是暂时性死区
var tmp = 123;
if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}

3.不允许重复声明

var item = 1;
var item = 2;
console.log(item);//2
// 报错
var item = 1;
let item = 2;
console.log(item);

const

let和const变量的声明不在是在全局变量上

var a = 1;
// 如果在 Node 的 REPL 环境,可以写成 global.a
// 或者采用通用方法,写成 this.a
window.a // 1

let b = 1;
window.b // undefined
上一篇下一篇

猜你喜欢

热点阅读