gpt4 book ai didi

javascript - 理解 JavaScript 的值传递

转载 作者:行者123 更新时间:2023-11-28 13:33:00 26 4
gpt4 key购买 nike

正如我们所知,JavaScript 中的一切都是按值传递,即使是作为函数参数的对象也被视为对对象的实际引用的按值传递。

我的问题是,我怎么可能访问一个对象,就像我可以修改它的属性一样——谈论作为参数传递给函数的对象,但我不能重写对象本身?

这是一种有意避免某些错误的机制,还是只是一个设计缺陷或限制?如果是故意的,这样做的目的是什么?重写对象本身的能力有什么额外的好处以及可能会发生什么类型的错误/错误?

我完全理解这是由对象引用的值传递引起的,但是我无法弄清楚是什么阻止我重写对象,因为我已经拥有其引用的副本 - 而且我可以也修改一下。

示例:

var x = { arr: [1,2,3] };

var modify = function ( _x ) {
_x.arr.push(4);
}

var rewrite = function ( _x ) {
_x = { str: "X" };
// OR
_x = "X";
}

modify(x);
console.log( "X after modification: ", x );
rewrite(x);
console.log( "X after rewrite: ", x );

jsFiddle

最佳答案

在修改或重写方法中,变量 x 和 _x 是对同一对象的引用。重写函数将 _x 变量更改为指向另一个对象。这不会改变 x 变量的引用,它仍然指向原始对象。

关于javascript - 理解 JavaScript 的值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23470477/

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