Javascript 在JS中传递数组是如何工作的?

Javascript 在JS中传递数组是如何工作的?,javascript,arrays,Javascript,Arrays,我最近学习了一些javascript的实际操作,并对一个我认为与数组有关的性能问题感到有点惊讶。 我编写了一个简短的测试函数来测试数组是否通过引用传递。 他们是。我唯一的安静是: 它是如何通过的? javascript中没有指针,对吗 以下是测试功能: function arr_test(arr) { for (var i = 0; i < arr.length; i++) { arr[i] = 50; } } function num_test(num)

我最近学习了一些javascript的实际操作,并对一个我认为与数组有关的性能问题感到有点惊讶。 我编写了一个简短的测试函数来测试数组是否通过引用传递。 他们是。我唯一的安静是:

它是如何通过的?

javascript中没有指针,对吗

以下是测试功能:

function arr_test(arr) {
    for (var i = 0; i < arr.length; i++) {
        arr[i] = 50;
    }
}

function num_test(num) {
    num = 50;
}

var array = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
arr_test(array);
console.log(array);

var num = 10;
num_test(num);
console.log(num);

几乎所有东西都是javaScript,它是一个对象

对象是通过引用传递的

因此,当您将数组(对象)传递到函数并对其进行修改时,它将持续存在

Javascript传递值(字符串或数字等基本值除外)。JS中有指针(事实上除了原语之外几乎所有的东西都是引用),但是它们是隐藏的并且是自动管理的(比如Java或Python)

阵列未被复制。您在函数
arr\u test
内得到的与函数外得到的相同。因此,如果更改其值,它将反映在函数之外

但是,在
num_test
函数中,您没有更新作为参数获取的数字的值。您要做的是将函数中的
num
变量指定给内存中其他位置的另一个数字。函数外部的
num
变量不变。
这实际上与
num
作为引用或变量传递无关。如果您没有更新
arr\u test
中的
arr[i]
,而是执行了
arr=[50,50]
(即,为给定参数分配另一个对象,而不是更新您提供的参数),函数外部的
数组
的值也不会被更新。

您是否想知道不将
num
输出到50。JavaScript的行为类似于Java!!指针在视图中是隐藏的,但它们的用途仍然清晰可见。您所说的“它到底是如何传递的”是什么意思?读取字符串可以是对象或原语。Javascript将在需要时将原语转换为对象,以便您可以将对象的方法与原语字符串一起使用。所以每个非原语变量都是通过引用传递的。太好了,这为我解决了一些问题。谢谢
Array [ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 ]
10