rrc*_*709 4 javascript arrays const
const name = 1;
name = 2;
Run Code Online (Sandbox Code Playgroud)
执行此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
Run Code Online (Sandbox Code Playgroud)
但是,在执行以下语句时,代码会成功执行.
const arr = [1,2,3];
arr[1] = 5;
Run Code Online (Sandbox Code Playgroud)
为什么我们能够修改数组,即使它被声明为常量.
因为数组本身没有改变,所以它仍然是相同的数组.在类C语言中,与此类似的是一个常量指针(对于内存中的某个地址) - 您无法更改指针所指向的位置,但内存可以写入相同的内容.
在JavaScript中,这个指针般的行为适用于任何不是原始(即Number
,Boolean
,String
...),这基本上是数组和对象.如果你想知道为什么String是一个原语,那是因为在JavaScript中字符串是不可变的.