let和const
默认使用 const,只有当确实需要改变变量的值的时候才使用 let。这是因为大部分的变量的值在初始化后不应再改变,而预料之外的变量的修改是很多 bug 的源头。
js
// bad
var foo = 'bar';
// good
let foo = 'bar';
// better
const foo = 'bar';块作用域
通过 var 关键词声明的变量没有块作用域。
在块 {} 内声明的变量可以从块之外进行访问。
通过 var 关键词定义的全局变量属于 window 对象,可以用
window.访问允许在程序的任何位置使用 var 重新声明 JavaScript 变量
使用 let 关键字重新声明变量可以解决这个问题。
在块中重新声明变量不会重新声明块外的变量
在块作用域内使用 const 声明的变量与 let 变量相似。
const 变量必须在声明时赋值
您可以更改、添加常量对象的属性,但是您无法重新为常量对象赋值
您可以更改常量数组的元素,但是您无法重新为常量数组赋值
提升
- 通过 var 声明的变量会提升到顶端。
您可以在声明变量之前就使用它:
js
// 在声明之前,您可以使用 carName
var Name;- 通过 let 定义的变量不会被提升到顶端。
在声明 let 变量之前就使用它会导致 ReferenceError。
变量从块的开头一直处于“暂时死区”,直到声明为止:
- 通过 const 定义的变量不会被提升到顶端。
const 变量不能在声明之前使用