在互联网上阅读有关Javascript数组及其方法的内容我发现了一些东西,我不明白发生了什么。我特意阅读了有关Array.reverse()方法的内容:
var numbers = [60, 50, 20, 30];
var value = numbers.reverse();
console.log(numbers); // [30, 20, 50, 60]
console.log(value); // [30, 20, 50, 60]
让我感到困惑的是为什么变量“数字”的值在这里改变了?
我很困惑,因为这里的情况不一样:
var number = 3;
var value = number * 2;
console.log(number); // 3
console.log(value); // 6
我在第一个例子中意识到我正在处理数组,而在第二个例子中只是整数。我不明白为什么在对变量“value”执行函数时修改变量“number”的值。但是在第二个例子中没有修改它。这有什么区别?
答案 0 :(得分:4)
Array.prototype.reverse()
将数组反转到位,即它会修改过程中的原始数组。
来自MDN:
reverse()
方法将数组反转到。第一个数组 元素成为最后一个,最后一个数组元素成为 第一var a = ['one', 'two', 'three']; a.reverse(); console.log(a); // ['three', 'two', 'one']
在第二种情况下,您使用primitives进行简单计算。这不会改变计算中使用的基元。
答案 1 :(得分:1)
让我困惑的是为什么变量的价值 "数字"改变了吗?
因为变量numbers
是对内存中数组的引用,并且在调用reverse
时它会修改此数组。
在这里,你正在使用原语
var number = 3;
var value = number * 2;
和原语在JS中是不可变的