我有一个问题,为什么以下返回不一致的值
(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
?
有人可以解释为什么会这样吗?它们被认为是不同的属性吗?
答案 0 :(得分:3)
您不重命名变量,将值分配给另一个变量。
就像:
$foo = $bar = true;
$bar = false;
print $foo; // true
print $bar; // false
答案 1 :(得分:0)
正在发生的事情是ab.cool.nice.funky.sweet
的值被复制到reVal
。如果您尝试将ab.cool.nice.funky
复制到reVal
,则不会发生这种情况,因为这两个符号都会引用同一个对象。
这种区别是处理值类型(如布尔值或整数)的产物,与javascript中基本上意味着对象的引用类型不同。
点击此处了解详情:http://docstore.mik.ua/orelly/webprog/jscript/ch11_02.htm