Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过函数参数重置数组_Javascript_Arrays_Function - Fatal编程技术网

Javascript 通过函数参数重置数组

Javascript 通过函数参数重置数组,javascript,arrays,function,Javascript,Arrays,Function,我试图通过函数参数重置数组 这是我的密码: <script> fruitArray = ["apple", "banana", "orange", "pineapple"] function newFruit(myArray){ myArray=[]; } newFruit(fruitArray) alert(fruitArray[0])//Returns "apple" </script> 请帮我学习这个 谢谢。像这样做吧。将长度设置为0 myArray.le

我试图通过函数参数重置数组

这是我的密码:

<script>
fruitArray = ["apple", "banana", "orange", "pineapple"]
function newFruit(myArray){
    myArray=[];
}
newFruit(fruitArray)
alert(fruitArray[0])//Returns "apple"
</script>
请帮我学习这个


谢谢。

像这样做吧。将长度设置为0

myArray.length = 0

您不使用所做的更改设置数组,而是向
newFruit
函数发送一个数组,您可以更改它,但这与您的
fruitArray
无关

因此,您所要做的就是
从函数中返回更改后的数组,并
使用从函数中返回的数组
设置
您的
数组
,如下所示:

furtarray=[“苹果”、“香蕉”、“橘子”、“菠萝”]
函数newFruit(myArray){
myArray=[];
返回myArray;
}
水果阵列=新水果(水果阵列);
警报(数组[0])//返回“undefined”,因为数组中没有[0]位。

警报(数组)//返回“”-空数组。
用户3378165
给出了正确答案:

<script>
fruitArray = ["apple", "banana", "orange", "pineapple"];
function newFruit(myArray){
  myArray.length = 0;
}
newFruit(fruitArray);
alert(fruitArray[0]);//Returns "apple"
</script>

水果数组=[“苹果”、“香蕉”、“橘子”、“菠萝”];
函数newFruit(myArray){
myArray.length=0;
}
新果(果列);
警报(数组[0])//返回“苹果”

实际上,问题是
按值
主题,您可以了解更多信息:实际上,这意味着如果您更改参数本身(如您所做的),则不会影响输入参数的项目。但是,如果您更改参数(array.length=0)的内部结构,则会传播到备份中,javascript中没有通过引用传递的概念。可以通过引用将对象文字传递给函数

fruitObj = new Object;
fruitObj.fruits = ["apple", "banana", "orange", "pineapple"];
function newFruit(myObj) {
    myObj.fruits = [];
}
newFruit(fruitObj);
alert(newFruit.fruits); // alerts an empty array

JavaScript是按值传递的,而不是按引用传递的。请看。数组是一个对象。@zerkms谢谢你纠正我。由于原型继承,javascript中的所有对象都是对象。但只有对象的直接实例,即;根据我的理解,其
typeof(obj)=“object”
可以通过引用传递给函数的对象。如果我错了,请纠正我。不幸的是,你错了。“由于原型继承,javascript中的所有对象都是对象”——这毫无意义。“即,其typeof(obj)=“object”“--
typeof(null)==“object”
null
绝对不是对象的对象。你的新措辞也有误导性:“你可以通过引用传递对象文字”——这没有什么意义。对象文字只是一种语法符号,它仍然表示一个对象。它是对运行时传递的对象的引用,而不是对对象文本的引用。myArray.length=0;为我工作谢谢你的解释:)
fruitObj = new Object;
fruitObj.fruits = ["apple", "banana", "orange", "pineapple"];
function newFruit(myObj) {
    myObj.fruits = [];
}
newFruit(fruitObj);
alert(newFruit.fruits); // alerts an empty array