我刚刚回答了this question,但我不明白为什么它的工作方式如此。为什么这个布尔转换不能按预期工作?
基本问题可以简化为这样:
var b = new Boolean(false);
console.info(b == false); // Prints "true" - OK
console.info(b && true); // Prints "true" - but should be "false"
我认为有一些直观的自动化铸造怎么回事,但我不明白它有时会被自动强制转换为true
,有时到false
。任何想法?
我想这说明了这个问题更好:
> false && 123
false // OK
> new Boolean(false) && 123
123 // ???
你怎么说'b &&假'shold是真的 –
有趣的问题!增加了一个清晰的例子。 – georg