gpt4 book ai didi

Javascript - 返回通过引用传递的修改后的对象

转载 作者:行者123 更新时间:2023-11-29 19:37:09 25 4
gpt4 key购买 nike

我知道 Javascript 的对象是通过函数引用的副本传递的。

从这个意义上说,如果我有一个修改对象的函数,我应该返回对象并覆盖原来的对象吗?

即,这个

function inc(obj)
{
obj.count++;
}

obj = {count : 0, topic : 'Something'};
inc(obj);

对比这个:

function inc(obj)
{
obj.count++;
return obj;
}

obj = {count : 0, topic : 'Something'};
obj = inc(obj);

哪个更好,为什么?

最佳答案

如果函数返回传入的值,那么就没有意义了——外部变量“obj”的值在任何情况下都不能被函数改变。

说 JavaScript 中的任何内容都是“通过引用传递”的说法并不完全正确。对象“值”总是引用,参数传递也不异常(exception)。 JavaScript 是一种严格的按值传递语言;只是碰巧是对对象的引用的值是对对象的引用。所以你在问题开头所说的是正确的:对象引用的副本被传递到函数中。参数传递是一个简单而又复杂的话题,尤其是“引用”这个词出现在技术“语言理论”术语“传递引用”中。

现在,在您的函数可能出于某种原因决定它需要创建一个对象的情况下,返回一个对象可能是有意义的。

关于Javascript - 返回通过引用传递的修改后的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24814404/

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