Javascript 为什么我的变量根据它们是否';你是数组还是整数?
在互联网上阅读有关Javascript数组及其方法的文章时,我发现了一些东西,但我不明白发生了什么。我专门阅读了Array.reverse()方法: 让我困惑的是,为什么变量“数字”的值在这里发生了变化 我很困惑,因为这里的情况不一样: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 我意识到在第一个例子中,我处理的是数组,在第二个例子中,我只处理整数。我不明
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']