gpt4 book ai didi

javascript - JS 中传递数组是如何工作的?

转载 作者:行者123 更新时间:2023-11-27 22:58:41 25 4
gpt4 key购买 nike

我最近正在学习一些实际的 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);

输出符合预期:

Array [ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 ]
10

最佳答案

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

数组未被复制。在函数 arr_test 内部得到的结果与函数外部得到的结果相同。因此,如果您更改其值,它将反射(reflect)在函数外部。

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

关于javascript - JS 中传递数组是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37338452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com