【发布时间】:2016-11-29 16:36:28
【问题描述】:
在互联网上阅读有关 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]
让我感到困惑的是,为什么这里的变量“numbers”的值发生了变化?
我很困惑,因为这里不一样:
var number = 3;
var value = number * 2;
console.log(number); // 3
console.log(value); // 6
我意识到在第一个示例中我正在处理数组,而在第二个示例中只是整数。我不明白为什么在对变量“value”执行函数时会修改变量“number”的值。但是在第二个示例中它没有被修改。这里有什么区别?
【问题讨论】:
-
reverse()改变数组 -
这里的关键是,根据规范,reverse 在原地运行并返回对源数组的引用。虽然我觉得这是一个不幸的设计选择,但其根源在于您有两个变量引用了一个数组对象。
标签: javascript arrays function variables methods