gpt4 book ai didi

将对象作为参数传递时的 Javascript 函数作用域

转载 作者:行者123 更新时间:2023-11-28 18:37:22 24 4
gpt4 key购买 nike

嗨,我有以下 JavaScript 代码

var skyrimCity = function(object) {
object = {
'world': 'whiterun'
};
},
skyrim = function(object) {
object.world = 'skyrim';
},

elderScrolls = {
'world': 'tamriel'
};
console.log(elderScrolls); // printed value ? -> {world: "tamriel"}

skyrimCity(elderScrolls);
console.log(elderScrolls); // printed value ? -> {world: "tamriel"}

skyrim(elderScrolls);
console.log(elderScrolls); // printed value ? -> {world: "skyrim"}

在 skyrim 函数内我改变了 world 的值,但我也可以在函数外看到它。我想知道为什么此更改的范围会传播到函数之外?在 JavaScript 函数中传递对象是否总是作为对原始对象本身的引用传递?

最佳答案

Is passing an object inside a javascript function always passed as a reference to the original object itself?

是的,差不多。在 JavaScript 中,任何不是基本类型(数字、 bool 值、字符串)的东西都是引用类型。如果将对象传递给函数,则传递的是对原始对象的引用。如果在函数内修改该对象,则原始对象也会被修改。

换句话说,这与变量范围无关,而是与变量实际引用的内容有关。

关于将对象作为参数传递时的 Javascript 函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850340/

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