为了账号安全,请及时绑定邮箱和手机立即绑定

一个关于Boolean类的问题

一个关于Boolean类的问题

RISEBY 2018-12-10 20:09:21
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); 不知道生成问题的时候却没有了一部分代码了。
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我想是这样吧!在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了。

我想我这样说应该是很明白了吧!_:)

如果还不能理解的话,可以给我发站类信继续交流的........


查看完整回答
反对 回复 2018-12-14
  • 2 回答
  • 0 关注
  • 644 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信