gpt4 book ai didi

javascript - JS通过引用推送对象的原因是什么?

转载 作者:行者123 更新时间:2023-11-28 16:54:07 25 4
gpt4 key购买 nike

Javascript 按引用而不是按值推送对象的原因是什么?

为什么这种行为仅适​​用于对象而不适用于内置基元类型?

例如:

let x = {a: 10, b: 100 }
let ar = [];

ar.push(x);
x.a = 9;
console.log(ar[0].a); // This print 9, not 10

我认为这个问题的答案对于理解这种语言的一些深层功能很有用。

提前致谢。

最佳答案

JavaScript 中的所有内容都是按值传递的...

但是,这些值可以作为引用值。

不同之处看似微妙,但却非常重要。

例如,如果您有一个函数:

function nukeArray(a) {
a = [];
}

然后,当您调用它时,a 将收到一个恰好是引用的值。该值将立即被丢弃,并为 a 分配一个新的引用。

如果 a 是纯引用,那么更改 a 也会更改其调用者的值。

在像 C 这样的语言中,您可以轻松地传递引用 - 更改引用 - 然后调用者的值也会更改。

#include <stdio.h>
#include <stdlib.h>

void t(char **t) {
*t = malloc(50);
}

int main() {
char *tmp;
printf("pre: %p\n", tmp);
t(&tmp);
printf("post: %p\n", tmp);
}

关于javascript - JS通过引用推送对象的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524593/

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