将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

关于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 = [];

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中完全有效的语法。谢谢-通过引用传递正是我需要知道的:)谢谢。我有一个圆形物体的问题,但我认为我发现了错误。我将从我的问题中删除这一部分以保持清楚。没问题,很乐意帮助。我更新了我的答案以符合您编辑的问题