gpt4 book ai didi

javascript - 'value is a reference' 对 JavaScript 对象意味着什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:45 24 4
gpt4 key购买 nike

我试图理解 JavaScript 中变量和对象的传递,遇到了 this page .

说明JavaScript对象是按值传递的,但值本身是一个引用。尽管我理解该页面上给出的示例中发生的情况,但我仍然对原因感到困惑。谁能解释一下“值(value)本身就是一个引用”是什么意思?

最佳答案

一些语言对函数参数有一个“按引用传递”的概念,这意味着当你调用一个函数并传入一个变量时按引用函数可以修改原始变量以保存一些其他值- 它具有对原始变量的引用。

使用“按值传递”,当您调用函数并传入变量时,函数仅获取值,因此无法更改传入的原始变量。

JS 只有“按值传递”,但是当您将对象作为参数传递时,“值”是对原始对象的引用,这样函数就可以修改、创建或删除该对象的属性,但是函数不能修改原始变量以引用其他对象或值。

例子:

function changeObj(someObj) {
someObj.a = 1000;
someObj.c = "test";

someObj = { "x" : 5 };
console.log(someObj); // { "x" : 5 }
}

var o = { "a" : 1, "b" : 2 };
changeObj(o);
console.log(o); // { "a" : 1000, "b" : 2, "c" : "test" }

我展示的代码创建了一个变量 o,它引用了一个具有 ab 属性的对象。然后它调用函数 changeObj 并传入 o。该函数更改了 a 属性的值并创建了一个新的 c 属性 - 该函数正在修改变量 o 引用的同一个对象,因为它有一个对该对象的引用。但是随后该函数将 someObj 分配给一个全新的对象。这根本不会影响o,因为该函数只引用了o指向的对象,它没有访问权限o 变量本身。

关于javascript - 'value is a reference' 对 JavaScript 对象意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030407/

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