为什么我的变量会根据它们是数组还是整数而有所不同?

时间:2016-11-29 16:36:29

标签: javascript arrays function variables methods

在互联网上阅读有关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”的值。但是在第二个例子中没有修改它。这有什么区别?

2 个答案:

答案 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中是不可变的