let const 与 var
ES6(2015 年)之后,声明变量只用 let 和 const,老的 var 只需要看懂即可。三者最关键的区别是作用域与能否重新赋值。
var:没有块级作用域,可以重复声明,变量会「泄漏」到块外面,还容易引发诡异的循环问题;let:块级作用域(只在{}内有效),同一作用域不允许重复声明,先访问再声明会直接报错(暂时性死区);const:声明常量,绑定关系不能变。注意它只是「不能再指向别的东西」,对象内部的属性依然可以修改。
实践建议:默认写 const,确定需要重新赋值时再换成 let,彻底告别 var。
本节要点let/const 是块级作用域,var 是函数作用域;const 禁止重新赋值但允许修改对象属性;新代码一律用 let/const。
JavaScript
// var 的问题:没有块级作用域,块外也能访问 if (true) { var old = '我是 var,泄漏出来了'; } console.log(old); // let:块级作用域,只在 {} 里有效 if (true) { let fresh = '只在块里有效'; console.log(fresh); } // console.log(fresh); // 报错:fresh is not defined // const:不能重新赋值 const MAX = 100; // MAX = 200; // 报错:Assignment to constant variable // 但 const 对象的属性可以修改 const user = { name: '小明' }; user.name = '小红'; // 允许 // user = {}; // 不允许:不能指向新对象 console.log(user.name);
📚 推荐阅读
来自万象云档的免费在线书籍,点击封面直接阅读




