1.let-const-var

2017-10-27  本文已影响16人  dptms

var

在 es6 中引入了 let 和 const 关键字声明变量,弥补了 var 关键字的缺陷

var a = 4;
function test(){
    var a = 3;
}
console.log(a); // 结果:4

let

var price = 100;
var count = 10;
if(count > 5){
    const discount = price * 0.6;
    console.log(`The discount is ${discount}`); // 结果:The discount is 60
}
console.log(discount); // 结果:Uncaught ReferenceError: discount is not defined

const

如果是引用类型的值

const person = {
    name:'Dp',
    age:30
}
person = {name:'tms'}; // 报错
person.age = 40; // ok

ps : 以上的例子一个是改变了对象,一个是改变了对象的属性,如果完全不想更改一个对象,可以使用Object.freeze(obj)

再来个例子

for (var i = 1; i < 10; i++) {
    console.log(i);
    setTimeout(function () {
        console.log(`i:${i}`);
    }, 1000);
}

这里把 var 可以换成 let,const试试。

ES6暂时性死区

console.log(color);
var color = 'yellow';

在 ECMAScript 2015 中,let 绑定不受变量提升的约束,这意味着 let 声明不会被提升到当前执行上下文的顶部。在块中的变量初始化之前,引用它将会导致 ReferenceError(而使用 var 声明变量则恰恰相反,该变量的值是 undefined )。这个变量处于从块开始到 let 初始化处理的”暂存死区“之中。 参考,

如果选择声明变量的方式

上一篇下一篇

猜你喜欢

热点阅读