在 JavaScript 中,var 是老版本的变量声明方式(ES5 及以前),而 let 是 ES6 新引入的(更现代)。let 主要为了解决 var 的痛点,让代码更安全、可预测。简单说,var 容易出 bug,let 更严谨。以下是核心区别,用表格对比,便于看清。
| 方面 | var(函数/全局作用域) | let(块级作用域) |
|---|---|---|
| 作用域 | 函数作用域:变量在整个函数内有效,甚至在声明前也能用(但值为 undefined)。全局变量会污染全局。 | 块级作用域:只在 {} 内有效(如 if、for 循环)。不会污染外层。 |
| 变量提升(Hoisting) | 支持:声明会被“提升”到函数顶部,但赋值不提升。用前是 undefined。 | 不支持:必须先声明再用,否则 ReferenceError。 |
| 重复声明 | 允许:在同一作用域重复 var,不会报错(但覆盖前值)。 | 不允许:在同一作用域重复 let,会报 SyntaxError。 |
| 典型场景 | 老代码、循环中易出错(如闭包问题)。 | 现代代码首选,尤其循环、条件块中。 |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END










暂无评论内容