7

可能重复:
javascript 数字 - 不可变

我阅读了 Douglas Crockford 的书 JavaScript: the Good Parts。它说 JavaScript 中的数字是不可变的。但是 JavaScript 中的数字是按值复制的,我们可以使用运算符 ++ 来更改值。那么为什么说它是不可变的呢?此外,如果它是不可变的,为什么数字是按值复制的?

4

2 回答 2

6

它们是不可变的,因为它们是按值复制的。

当你这样做

var x = 4;
x += 1;

你没有把 number4改成 number 5。您已将存储在变量中的值x4更改为5

于 2012-05-18T07:25:43.690 回答
0

当你修改一个对象的成员时,你修改了它的内容。变量(即引用)的值保持不变。这是可变的,

当您声明一个字符串时,它有一个值,但是当您更改该值时,实际上会创建一个新字符串。这意味着它是不可变的。

数字也是如此。您不能将 3 更改为 4。A 3 始终是 3,而不是其他任何东西。因此,当您将变量分配给另一个数字时,您是在内存中创建一个新数字,而不是将某个变量指向的某些内存的内容分配给不同的值。

于 2012-05-18T07:28:19.430 回答