查看: 3533|回复: 2

[交流讨论] 一个关于js的赋值问题

[复制链接]
梦石
0
星屑
245
在线时间
219 小时
注册时间
2015-9-24
回帖
138
发表于 2016-1-7 15:47:21 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang="javascript"]var a={n:1};
var b=a;
a.x=a={n:2};
console.log(a.x);//-->undefined
console.log(b.x);//-->[object Object][/pre]

就是以上的代码……已经被绕晕

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-1-7 15:57:07 | 显示全部楼层
本帖最后由 taroxd 于 2016-1-7 15:58 编辑

// 注释中的等号表示「相等」
var a={n:1};  // a = {n: 1}
var b=a;      // a = b = {n: 1}
a.x=a={n:2};  // a: {n: 2}, b: {n: 1, x: {n: 2}}, a = b.x
console.log(a.x);
console.log(b.x);

点评

因为 b = a,所以第三行的 a.x 就相当于 b.x。你把第三行的 a.x 改成 b.x ,看看明白了吗?  发表于 2016-1-7 16:32
为什么x: {n: 2}……  发表于 2016-1-7 16:08
回复

使用道具 举报

梦石
0
星屑
80
在线时间
386 小时
注册时间
2007-7-27
回帖
4075

开拓者

发表于 2016-1-7 15:58:58 来自手机 | 显示全部楼层
a -> obj1
b -> obj1
obj1.x -> a -> obj2

这样你能明白吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部