const作为变量声明与将const作为值赋值给var变量的区别是什么?
const 作变量声明 vs 作表达式(值)的区别
1. const list = [1,2,3]:标准ES6变量声明
- 这是JavaScript里定义只读绑定变量的常规写法,
const是声明关键字,用来创建一个块级作用域的变量。 - 关键特性:变量的「引用」无法被重新赋值(比如不能写
list = [4,5,6]),但如果它指向数组、对象这类引用类型,内部的元素/属性是可以修改的——比如执行list.push(4)后,数组会变成[1,2,3,4],这完全合法。
2. var list = const[1,2,3]:语法错误(或混淆了const断言)
- 首先明确:标准JavaScript中这种写法直接报错,因为
const是声明关键字,不能作为表达式放在赋值运算符右侧使用。 - 如果你是想实现TypeScript/ES2024+中的const断言(把值锁定为字面量类型,禁止类型自动拓宽),正确写法是
var list = [1,2,3] as const。这种场景下的特性:- 数组会被推断为只读字面量数组(类型为
readonly [1,2,3]),数组内的元素无法被修改(比如list[0] = 0会触发错误)。 - 但因为用
var声明变量,list本身可以被重新赋值(比如list = [4,5,6]是允许的)。
- 数组会被推断为只读字面量数组(类型为
核心差异对比
| 写法 | 合法性 | 变量引用是否可重赋值 | 数组内容是否可修改 |
|---|---|---|---|
const list = [1,2,3] | 标准JS合法 | 否 | 是 |
var list = [1,2,3] as const(修正后) | TS/ES2024+合法 | 是 | 否 |
内容的提问来源于stack exchange,提问作者Yugraaj Sandhu
相关产品推荐
相关产品推荐

