为什么第一个变量初始对象引用变量的第二个变量在第一个指向新对象时不会更新? [重复]

问题描述 投票:0回答:2

据我所知,x中的对象引用x = { greet: hi }存储对象{ greet:hi}的引用,而不像保存实际值的基本类型(y=10

在下面的代码中,console.log(y)输出{greet: "hi"}

y obj ref更新为指向{greet: 'hello'}时,为什么x对象引用未更新为指向x = {greet: 'hello'}

var x = {greet: 'hi'};
var y = x;
x = {greet: 'hello'};

console.log(y);
console.log(x)
javascript javascript-objects
2个回答
1
投票

因为在x = {greet: 'hello'};行中正在创建一个新对象。

使用x.greet = 'hello';更新旧对象。

var x = {greet: 'hi'};
var y = x;
x.greet = 'hello';

document.getElementById("text_show").innerHTML= x.greet + " | " + y.greet;
<div id="text_show"></div>

See here to know about objects in JavaScript

0
投票

当x obj ref更新为指向x = {greet:'hello'}时,为什么y对象引用未更新为指向{greet:'hello'}

因为你已经为x分配了一个新的引用,而y仍然指向原始的引用。

当你说

var y = x;

你指向y指向x指向的相同参考,你没有指向yx

© www.soinside.com 2019 - 2024. All rights reserved.