在函数内部改变 JavaScript 数组

2023-12-14

在 JavaScript 中,如何改变函数内数组的值?我知道使用某些数组方法时会发生这种情况,但它似乎不适用于正常分配。

var arr = [4]

function changeArray(arr) {
arr = [1,2,3];
}

// arr is still equal to [4]. I want it to equal [1,2,3].

据我了解,这段代码不会改变函数外部“arr”的值。我怎样才能以改变作为参数传递的数组的方式来做到这一点?


您可以使用.splice:

arr.splice(0, arr.length, 1, 2, 3);

或者你可以清空数组并.push价值:

arr.length = 0;
arr.push(1, 2, 3);
// or given an array of values
arr.push.apply(arr, newValues);

但是,请确保清楚该函数更改了数组in place。虽然有一些本机函数可以执行此操作(例如Array#sort),我认为这并不像简单地返回一个新数组那么常见。


据我了解,这段代码不会改变函数外部“arr”的值。

正确的。为变量或属性分配新值never更改另一个变量或属性的值(例外:全局范围和with声明)。 您基本上试图更改变量的值,而不是改变值本身。

JavaScript 是调用/传递/分配by value(维基百科还提到“通过分享”), not by 参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在函数内部改变 JavaScript 数组 的相关文章

随机推荐