在函数内改变JavaScript数组
Mutate JavaScript Array Inside Function
在JavaScript中,我如何改变函数内部数组的值?我知道在使用某些数组方法时会发生这种情况,但它似乎不适用于正常的赋值。
var arr = [4]
function changeArray(arr) {
arr = [1,2,3];
}
// arr is still equal to [4]. I want it to equal [1,2,3].
这是我的理解,这段代码不会改变函数外的"arr"的值。我怎样才能改变作为参数传递的数组呢?
您可以使用.splice
:
arr.splice(0, arr.length, 1, 2, 3);
或者您可以清空数组并.push
值:
arr.length = 0;
arr.push(1, 2, 3);
// or given an array of values
arr.push.apply(arr, newValues);
但是,要确保清楚该函数在的位置更改了数组。虽然有一些本机函数可以这样做(比如Array#sort
),但我认为这并不像简单地返回一个新数组那样常见。
这是我的理解,这段代码不会改变函数外的"arr"的值。
正确的。给一个变量或属性赋一个新值永远不会改变另一个变量或属性的值(例外:全局作用域和with
语句)。你基本上试图改变一个变量的值,而不是改变值本身。
JavaScript是通过值调用/传递/分配(维基百科也提到"通过共享"),而不是通过引用。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)