javascript - js赋值与优先级问题
本文介绍了javascript - js赋值与优先级问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
function test() {
var a = {
n: 1
};
var b = a;
a.x = a = {n: 2};
console.log(a.x); //undefined
console.log(b.x); //{n:2}
console.log(a)
}
test()
a.x是属性访问,优先级比较高,那么赋值的话先把{n:2}赋给a,a的地址变化,那么a.x中的a不是地址也变了吗,在把{n:2}赋给a.x为何a.x还是undefined
解决方案
a.x = a = {n: 2};
这一句中, a.x
最先地址求值,这时 a
还没变,后面 a={n: 2}
时, a
已经变了(这时, a.x
(的引用) 已经跟 a
(的引用)完全是两个东西了,所以你只能在旧的 b
中看到它)。
这篇关于javascript - js赋值与优先级问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文