我正在尝试通过函数参数重置数组。
这是我的代码:
<script>
fruitArray = ["apple", "banana", "orange", "pineapple"]
function newFruit(myArray){
myArray=[];
}
newFruit(fruitArray)
alert(fruitArray[0])//Returns "apple"
</script>
我想清除数组,但它没有通过该函数。我不确定这条线:
myArray=[];
请帮助我学习这个。
谢谢。
答案 0 :(得分:0)
这样做。将长度设置为0
myArray.length = 0
答案 1 :(得分:0)
您没有使用您所做的更改设置数组,您向newFruit
函数发送数组,您更改它但这与您的 {{1无关}}
所以你要做的就是从函数fruitArray
更改数组,从函数return
set
使用数组fruitArray
returned
,如下所示:
fruitArray = ["apple", "banana", "orange", "pineapple"]
function newFruit(myArray){
myArray = [];
return myArray;
}
fruitArray = newFruit(fruitArray);
alert(fruitArray[0]);//Returns "undefined" because there is no a [0] place in the fruitArray.
alert(fruitArray);//Returns ""-empty array.
顺便提一下您的代码遗失;
您也可以这样清除阵列:
fruitArray.length = 0
答案 2 :(得分:0)
user3378165
给出了正确答案:
<script>
fruitArray = ["apple", "banana", "orange", "pineapple"];
function newFruit(myArray){
myArray.length = 0;
}
newFruit(fruitArray);
alert(fruitArray[0]);//Returns "apple"
</script>
实际上,问题是by value
主题,您可以了解更多here:实际上,这意味着如果您更改参数本身(就像您所做的那样),那就赢了&# 39; t影响送入参数的项目。但是如果你改变参数的内部(array.length = 0),它会传播回来
答案 3 :(得分:-1)
在javascript中没有通过引用传递的概念。您可以通过引用函数传递对象文字。
fruitObj = new Object;
fruitObj.fruits = ["apple", "banana", "orange", "pineapple"];
function newFruit(myObj) {
myObj.fruits = [];
}
newFruit(fruitObj);
alert(newFruit.fruits); // alerts an empty array