Javascript 为什么我的变量根据它们是否';你是数组还是整数?

Javascript 为什么我的变量根据它们是否';你是数组还是整数?,javascript,arrays,function,variables,methods,Javascript,Arrays,Function,Variables,Methods,在互联网上阅读有关Javascript数组及其方法的文章时,我发现了一些东西,但我不明白发生了什么。我专门阅读了Array.reverse()方法: 让我困惑的是,为什么变量“数字”的值在这里发生了变化 我很困惑,因为这里的情况不一样: var number = 3; var value = number * 2; console.log(number); // 3 console.log(value); // 6 我意识到在第一个例子中,我处理的是数组,在第二个例子中,我只处理整数。我不明

在互联网上阅读有关Javascript数组及其方法的文章时,我发现了一些东西,但我不明白发生了什么。我专门阅读了Array.reverse()方法:

让我困惑的是,为什么变量“数字”的值在这里发生了变化

我很困惑,因为这里的情况不一样:

var number = 3;
var value = number * 2;

console.log(number); // 3
console.log(value); // 6
我意识到在第一个例子中,我处理的是数组,在第二个例子中,我只处理整数。我不明白为什么在对变量“value”执行函数时会修改变量“number”的值。但是,在第二个示例中没有对其进行修改。这里有什么区别

让我困惑的是为什么变量的值 “数字”在这里变了

因为变量
numbers
是对内存中数组的引用,当调用
reverse
时,它会修改该数组

在这里,您正在使用基本体

var number = 3;
var value = number * 2;
原语在JS中是不可变的

让我困惑的是为什么变量的值 “数字”在这里变了

因为变量
numbers
是对内存中数组的引用,当调用
reverse
时,它会修改该数组

在这里,您正在使用基本体

var number = 3;
var value = number * 2;
而原语在JS中是不可变的

在适当的位置反转数组,即在过程中修改原始数组

来自MDN:

reverse()。第一个数组
元素成为最后一个,最后一个数组元素成为
首先


在第二种情况下,您正在使用进行简单的计算。这不会更改计算中使用的基本体。

将在位反转数组,即在过程中修改原始数组

来自MDN:

reverse()。第一个数组
元素成为最后一个,最后一个数组元素成为
首先



在第二种情况下,您正在使用进行简单的计算。这不会更改计算中使用的原语。

reverse()
会对阵列进行变异此处的关键是,根据规格,reverse会在适当的位置运行并返回对源阵列的引用。虽然我觉得这是一个不幸的设计选择,但其根源在于您有两个变量引用一个数组对象。
reverse()
对数组进行了变异这里的关键是,根据规格,reverse操作到位并返回对源数组的引用。虽然我觉得这是一个不幸的设计选择,但其根源在于您有两个变量引用一个数组对象。谢谢@Maximus,这与Timo的答案相结合。现在一切都有意义了。谢谢。@Fabian,没问题,如果你觉得有帮助的话,你可以投票:)谢谢@Maximus,再加上Timo的回答。现在一切都有意义了。谢谢。@Fabian,没问题,如果你觉得有帮助,你可以投票:)
var a = ['one', 'two', 'three'];
a.reverse(); 

console.log(a); // ['three', 'two', 'one']