【发布时间】:2018-08-05 15:59:16
【问题描述】:
const name = 1;
name = 2;
执行此 JavaScript 时出现错误:
TypeError: Assignment to constant variable.
at Object.<anonymous> (/home/user01/JavaScript/scope.js:2:6)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
但是,在执行以下语句时,代码会成功执行。
const arr = [1,2,3];
arr[1] = 5;
为什么我们可以修改一个数组,即使它被声明为常量。
【问题讨论】:
-
因为
const并不意味着“不可变”,很遗憾。 -
这是因为 const 不能重新分配。更改数组时不会重新分配变量。如果您不希望
arr可变,可以使用Object.freeze(arr)
标签: javascript arrays constants