一个关于Boolean类的问题

var oUpdated=new Boolean(false);
alert(oUpdated && true);

以上代码显示“true”,因为所有对象在Boolean表达式中都被自动转换成true,但以下代码为什么却返回false ?



var oUpdated=new Boolean(false);
alert(oUpdated || false);



问题补充: 晕,博客园博问中插入代码功能那里存在Bug,我输入的两块代码应该是这样的: 第一块代码: var oUpdated=new Boolean(false); alert(oUpdated && true); 第二块代码: var oUpdated=new Boolean(false); alert(oUpdated || false); 不知道生成问题的时候却没有了一部分代码了。


RISEBY
浏览 646回答 2
2回答

回首忆惘然

我想是这样吧!在javascript中Boolean往往不被人们重视,因为一般不是特别关于Javascript的情况下即时用到了Boolean类型时我们也只是如此来用:var ok=false;等。可实际上我们并未对Boolean本身做太多的追责。Boolean在javascript中是原始类型,但很有趣的是他的原始值也同时是伪对象,哪么既然是伪对象,当然他们会具备Object的一些方法和属性。哪么针对你上面的问题,我们不难看出,你这里是使用false来创建了一个Boolean对象oUpdated,哪么你在进行alert(oUpdated && true)做and操作的时候,这里是oUpdated对象本身,而Javascript中Boolean表达式的所有对象都会被自动转换为true,因此这里alert的结果一定是true,而不是false。同时我建议你在alert(oUpdated && true)前面先alert(typeof(oUpdated));结果是object。哪么这样结果就会不言而喻!哪么下面的操作alert(oUpdated || false)我想他和alert(oUpdated || true)的结果都是一样的,同时返回false。这里为什么返回的false,我想不用说了,他返回的是oUpdated的值,不是oUpdated这个Boolean对象。这是由于||操作符决定了这个结果,首先会判断oUpdated,因为他是用Boolean创建的一个的对象,Boolean表达式决定了oUpdated永远是true,所以alert(oUpdated || false)时就会返回oUpdated,此时既然要返回oUpdated,当然他返回的只能是oUpdated的值false了。我想我这样说应该是很明白了吧!_:)如果还不能理解的话,可以给我发站类信继续交流的........
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript