gpt4 book ai didi

javascript - 在JavaScript中,为什么不能修改常量String但可以修改常量数组

转载 作者:搜寻专家 更新时间:2023-11-01 05:09:06 25 4
gpt4 key购买 nike

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;

为什么我们能够修改一个数组,即使它被声明为常量。

最佳答案

因为数组本身没有变化,还是原来的数组。在类 C 语言中,与此类似的是常量指针(指向内存中的某个地址)——您无法更改指针指向的位置,但内存是可写的。

在 JavaScript 中,这种类似于指针的行为适用于任何非原始类型的东西(即 NumberBooleanString ... ), 这基本上是数组和对象。如果您想知道为什么 String 是原始类型,那是因为 in JavaScript Strings are immutable .

关于javascript - 在JavaScript中,为什么不能修改常量String但可以修改常量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51695923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com