可能重复:
javascript 数字 - 不可变
我阅读了 Douglas Crockford 的书 JavaScript: the Good Parts。它说 JavaScript 中的数字是不可变的。但是 JavaScript 中的数字是按值复制的,我们可以使用运算符 ++ 来更改值。那么为什么说它是不可变的呢?此外,如果它是不可变的,为什么数字是按值复制的?
可能重复:
javascript 数字 - 不可变
我阅读了 Douglas Crockford 的书 JavaScript: the Good Parts。它说 JavaScript 中的数字是不可变的。但是 JavaScript 中的数字是按值复制的,我们可以使用运算符 ++ 来更改值。那么为什么说它是不可变的呢?此外,如果它是不可变的,为什么数字是按值复制的?
它们是不可变的,因为它们是按值复制的。
当你这样做
var x = 4;
x += 1;
你没有把 number4
改成 number 5
。您已将存储在变量中的值x
从4
更改为5
。
当你修改一个对象的成员时,你修改了它的内容。变量(即引用)的值保持不变。这是可变的,
当您声明一个字符串时,它有一个值,但是当您更改该值时,实际上会创建一个新字符串。这意味着它是不可变的。
数字也是如此。您不能将 3 更改为 4。A 3 始终是 3,而不是其他任何东西。因此,当您将变量分配给另一个数字时,您是在内存中创建一个新数字,而不是将某个变量指向的某些内存的内容分配给不同的值。