javascript連續(xù)賦值問題
前幾天在搜索面試題時發(fā)現(xiàn)了這么一段代碼,執(zhí)行完后感覺完全不與所想的一樣
var a = {
n : 1
};
var b = a;
a.x = a = {n : 2};
console.log(a.x);
console.log(b.x);
輸出結(jié)果為:
undefined
[object Object]
一開始以為語句應(yīng)該是先給 a 賦值 {n : 2} , 然后再將 a.x 賦值 {n : 2} ;
但事實卻不是那樣,于是改動了一下代碼,添加幾條log
var test;
var a = {
get test () {
console.log("call a get");
return test;
},
set test (value) {
console.log("call a set");
test = value;
}
}
var test2;
var b = {
get test2 () {
console.log("call b get");
return test2;
},
set test2 (value) {
console.log("call b set");
test2 = value;
}
}
a.test = {
n : 1
};
b.test2 = a.test;
console.log("begin");
a.test.x = a.test = {n : 2};
這樣,在begin后邊,這條賦值到底執(zhí)行了什么就一目了然了.

這是語句執(zhí)行時打印的log
先觸發(fā)了一次get,然后觸發(fā)了一次set.
本人猜想,該條語句執(zhí)行的順序為,先將左邊變量取出,然后執(zhí)行賦值.(在執(zhí)行該條語句前,先將對象引用取出,然后從右到左執(zhí)行賦值)

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡
相關(guān)文章
js判斷數(shù)組key是否存在(不用循環(huán))的簡單實例
下面小編就為大家?guī)硪黄猨s判斷數(shù)組key是否存在(不用循環(huán))的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
cookie 最近瀏覽記錄(中文escape轉(zhuǎn)碼)具體實現(xiàn)
cookie 最近瀏覽記錄(中文escape轉(zhuǎn)碼)具體實現(xiàn),需要的朋友可以參考一下2013-06-06

