我有关于问题,为什么下面的返回值不一致对象属性重命名
(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