都是用来声明变量。 ## let和const - 不存在变量提升 变量一定要在声明后使用。 - 暂时性死区 如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。在声明之前,这些变量都是不可用的。 - 不允许重复声明 `const` 定义的是**不可重新赋值**的值,与不可变的值(Immutable value)不同;如果`const`定义的是引用数据类型的常量,在定义之后仍可以修改其属性,如果是基础数据类型的常量则不能更改;`const`一旦声明常量,就必须立即初始化。 ```javascript const a = 1; a = 2; console.log(a); // Assignment to constant variable const obj = {name: "zhangsan"} obj.name = "lisi"; console.log(obj.name); //lisi ``` `var`声明的全局变量是全局对象的属性,`let`和`const`声明的全局变量不属于全局对象的属性。 ```javascript var value = 1; console.log(window.value); // 1 let value = 1; console.log(window.value); // undefined ``` 默认使用**const**,只有当确实需要改变变量的值的时候才使用**let**。
Activity