可能重复:
JavaScript数字-不可变
我读过道格拉斯·克罗克福德的书《JavaScript语言精粹》。书中说JavaScript中的数字是不可变的。但是JavaScript中的数字是按值复制的,我们可以使用运算符++来改变它的值。那么为什么说它是不可变的?如果它是不可变的,为什么数字会被按值复制呢?
可能重复:
JavaScript数字-不可变
我读过道格拉斯·克罗克福德的书《JavaScript语言精粹》。书中说JavaScript中的数字是不可变的。但是JavaScript中的数字是按值复制的,我们可以使用运算符++来改变它的值。那么为什么说它是不可变的?如果它是不可变的,为什么数字会被按值复制呢?
由于它们是按值复制的,所以它们是不可变的。
当您执行以下操作时
var x = 4;
x += 1;
4
改成数字 5
。你只是将变量 x
中存储的值从 4
改成了 5
。++
。C#,Java,C,C ++ 等也支持。这只是 x = x + 1 的简写,但是还支持前缀和后缀增量的概念(x++
= 前缀,++x
= 后缀)。简而言之,这是一个几十年历史的概念,JavaScript 的行为并不异常。 - James Wiseman
let n = 0; let m = n; console.log(m, n, m === n); ++m; console.log(m, n, m === n);
- Min-Soo Pipefeet