在 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(使用前将#替换为@)