Variables
本页目录· 8 条
快速测试JS代码平台
onecompiler.comonecompiler.com/javascript本地运行JS
将代码保存在 JS 文件中(例如 app.js),然后运行 node 命令(安装 node.JS 后):$ node app.js
JavaScript 中的绑定(变量名与值): let、const 和 var
1. 作用域 (Scope)
| 关键字 | 作用域类型 | 说明 |
|---|---|---|
var | 函数作用域 (function scope) | 变量在整个函数内可用,如果在函数外声明,则是全局变量 |
let | 块作用域 (block scope) | 变量只在花括号 {} 内有效 |
const | 块作用域 (block scope) | 与 let 相同,但绑定不可重新赋值 |
2. 重新声明 & 重新赋值
| 关键字 | 是否可重新声明 | 是否可重新赋值 |
|---|---|---|
var | ✅ 可以 | ✅ 可以 |
let | ❌ 不可在同一作用域重复声明 | ✅ 可以 |
const | ❌ 不可在同一作用域重复声明 | ❌ 不可重新赋值(但对象属性可改) |
3. 提升 (Hoisting) 与 暂时性死区 (TDZ)
- var:声明会被提升到作用域顶部,默认值
undefined,可以在声明前访问(不建议)。 - let / const:声明会被提升到顶部,但会进入暂时性死区(TDZ),在声明前访问会报错。
4. const 与引用类型
const 不能更改绑定的值,但如果绑定的是对象或数组,可以修改其内容(因为内存地址没变)。
5. 实际建议
- 默认用
const,表示不会改变绑定,方便维护 - 需要修改的变量用
let - 不要用
var(除非需要兼容老代码),因为它的作用域规则容易出 bug
| 特性 | var | let | const |
|---|---|---|---|
| 作用域 | 函数作用域 | 块作用域 | 块作用域 |
| 提升 | ✅(值为 undefined) | ✅(TDZ 限制访问) | ✅(TDZ 限制访问) |
| 可重新声明 | ✅ | ❌ | ❌ |
| 可重新赋值 | ✅ | ✅ | ❌(对象属性可改) |