CodeWalk

let、const 和 var 的区别是什么?

作者:小字辈 · 2026-05-30 12:55

请从作用域、变量提升、重复声明、全局属性、修改权限等方面全面比较 let、const 和 var。

回答

小字辈

特性varletconst
作用域函数作用域块级作用域块级作用域
变量提升提升,初始化为 undefined提升,TDZ 未初始化提升,TDZ 未初始化
重复声明允许不允许(SyntaxError)不允许(SyntaxError)
全局属性全局 var 成为 window 属性不会挂载到 window不会挂载到 window
修改值可修改可修改不可修改(引用不可变,对象属性可变)
声明必赋值是(SyntaxError 若未赋值)
使用前声明否(undefined)必须(否则 ReferenceError)必须

最佳实践:默认用 const,需要重新赋值用 let,避免使用 var