我有關於問題,爲什麼下面的返回值不一致對象屬性重命名
(function(ab, $, undefined) {
ab.cool = {
nice: {
funky: {
sweet: false
}
}
};
var reVal = ab.cool.nice.funky.sweet;
reVal = true;
console.log(reVal); //equals true
console.log(ab.cool.nice.funky.sweet); //equals false
}(window.ab = window.ab || {}, jQuery));
我本來認爲兩者都應該返回相同的值true
?
有人可以解釋爲什麼會發生這種情況嗎?他們被認爲是不同的屬性?
感謝您的解釋。所以最好使用'var reVal = ab.cool.nice.funky;'然後使用'reVal.sweet = false;'? – Andy 2012-03-06 15:33:44
如果你想能夠從兩個符號中控制相同的值,是的,這是一個解決方案。 – 2012-03-06 15:34:56
一般來說,最佳做法是儘量減少對同一對象的引用,以避免混淆並提高可讀性。所以如果你確實有一個對象的引用,除非你絕對需要它,否則你不應該創建另一個引用。如果您需要訪問閉包之外的值,請將其暴露在閉包之上,不要複製其參考。 – 2012-03-06 15:40:44