将JavaScript数组传递给函数
关于JavaScript的一般性问题。如果我有一个修改数组的函数,例如:将JavaScript数组传递给函数,javascript,arrays,function,Javascript,Arrays,Function,关于JavaScript的一般性问题。如果我有一个修改数组的函数,例如: var some_array = []; function a_function(input, array){ //do stuff to array return array; } 在大多数语言中: var some_array = []; some_array = a_function(input, some_array); console.log(some_array); 工作,但在js
var some_array = [];
function a_function(input, array){
//do stuff to array
return array;
}
在大多数语言中:
var some_array = [];
some_array = a_function(input, some_array);
console.log(some_array);
工作,但在js中,以下也工作:
var some_array = [];
a_function(input, some_array);
console.log(some_array);
这是正确的吗?它是如何工作的?JS中的数组是对象,通过值传递到函数中,其中该值是对数组的引用。换句话说,作为参数传递给函数的数组仍然指向与外部数组相同的内存 这意味着更改函数内的数组内容会更改从函数外传递的数组
功能f(arr){
arr.push(1);
返回arr;
}
var数组=[];
//下面的两个函数调用都向同一数组添加一个元素,然后返回对该数组的引用。
//将元素添加到数组并返回它。
//它使用
//对同一数组的新引用。
数组=f(数组);
console.log(数组);//[1]
//向数组中添加元素并忽略返回的引用。
f(阵列);
console.log(数组);//[1,1]
数组是对象。对象是通过引用传递的<代码>一些数组和数组
在内存数组中是完全相同的。什么错误?这是JavaScript中完全有效的语法。谢谢-通过引用传递正是我需要知道的:)谢谢。我有一个圆形物体的问题,但我认为我发现了错误。我将从我的问题中删除这一部分以保持清楚。没问题,很乐意帮助。我更新了我的答案以符合您编辑的问题