javascript中的赋值我们都知道,是从右至左的
var a = b = c
上面的语句实际执行时是这样的
b = c var a = b
但是如果有对象参与进来呢?昨天看到的一个例子
var foo = { a: 2 } var bar = foo foo.x = foo = { b: 3 }
前两行很简单,就是将bar也指向了foo。
第三行,刚开始是执行foo = { b: 3 },这样将foo重新指向了另一个对象。
接下来的一句foo.x = foo,这句我本来以为是foo.x指向foo,这样foo就成了一个循环引用自身的对象,即
foo = {
b: 3,
x: {
b: 3,
x: {
b: 3,
x: {
......
}
}
}
}
但是实际测试发现,foo.x = foo这句里面的foo.x中的foo是指向bar,也就是还没重新赋值的foo,有点不太理解,感觉应该是解析时候是从左到右,但是实际执行会是从右到左这样?
眼眸繁星
相关分类