将JavaScript数组传递给函数
Passing JavaScript arrays to functions
关于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中的数组是对象,按值传递到函数中,其中该值是对数组的引用。换句话说,作为参数传递给函数的数组仍然指向与外部数组相同的内存。
这意味着更改函数内的数组内容会更改从函数外传递的数组。
function f(arr) {
arr.push(1);
return arr;
}
var array = [];
// both function calls bellow add an element to the same array and then return a reference to that array.
// adds an element to the array and returns it.
// It overrides the previous reference to the array with a
// new reference to the same array.
array = f(array);
console.log(array); // [1]
// adds an element to the array and ignores the returned reference.
f(array);
console.log(array); // [1, 1]
相关文章:
- 从函数JavaScript返回不可变数组/对象
- 将对象传递给函数.JavaScript
- 如何定义const函数javascript(语法糖)
- 新的日期函数javascript
- TypeError:this.getAttribute不是一个函数-javascript
- 从函数javascript发送变量
- 扩展自容器函数Javascript
- 从内部函数javascript内部分配外部函数的对象
- 使用函数JavaScript中的函数
- 在这里使用回调函数(JavaScript)有什么好处吗
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 将“e”传递给一个新函数 - javascript
- 调用函数中的一个函数——Javascript
- 传递的变量不适用于我的函数-Javascript
- 如何将类方法设置为等于多个函数?-Javascript
- 显示php中的函数javascript
- 如何使用php代码创建函数Javascript弹出框
- 未调用的外部函数-javascript
- 如何在类中运行函数.Javascript
- 关闭mouseover上的一个函数——Javascript,jQuery