我不知道怎么给这个标题,但这里有一个例子
我将一个数组传递给一个函数,我希望函数内部的所有更改都应用到由 ref (event the []) 传递的数组 =>
var myArray = [1,2,3,4];
function resetter(arr){
arr = []
}
resetter(myArray); // still [1,2,3,4] because I assign a new object
但我希望将更改应用于我作为引用传递的数组
var myArray = [1,2,3,4];
function resetter(arr){
arr.length = 0;
}
resetter(myArray); // [] but is this clean ?
还有其他办法吗?
最佳答案
如果两个变量具有相同的引用,则意味着修改(更改属性)其中一个将更改另一个。这并不意味着为一个值分配新值会改变另一个值。
你可以使用splice()
var myArray = [1,2,3,4];
function resetter(arr){
arr.splice(0,arr.length)
}
resetter(myArray);
console.log(myArray)
考虑是否要将数组更改为全新数组而不仅仅是 []
。您可以使用扩展运算符将另一个数组传递给 splice()
var myArray = [1,2,3,4];
function resetter(arr, newArray){
arr.splice(0,arr.length,...newArray)
}
resetter(myArray, ['str1','str2']);
console.log(myArray)
关于javascript - 如何重置函数范围外的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56179078/