2 回答
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
我想是這樣吧!在javascript中Boolean往往不被人們重視,因?yàn)橐话悴皇翘貏e關(guān)于Javascript的情況下即時(shí)用到了Boolean類型時(shí)我們也只是如此來用:var ok=false;等。可實(shí)際上我們并未對(duì)Boolean本身做太多的追責(zé)。
Boolean在javascript中是原始類型,但很有趣的是他的原始值也同時(shí)是偽對(duì)象,哪么既然是偽對(duì)象,當(dāng)然他們會(huì)具備Object的一些方法和屬性。
哪么針對(duì)你上面的問題,我們不難看出,你這里是使用false來創(chuàng)建了一個(gè)Boolean對(duì)象oUpdated,哪么你在進(jìn)行alert(oUpdated && true)做and操作的時(shí)候,這里是oUpdated對(duì)象本身,而Javascript中Boolean表達(dá)式的所有對(duì)象都會(huì)被自動(dòng)轉(zhuǎn)換為true,因此這里alert的結(jié)果一定是true,而不是false。同時(shí)我建議你在alert(oUpdated && true)前面先alert(typeof(oUpdated));結(jié)果是object。哪么這樣結(jié)果就會(huì)不言而喻!
哪么下面的操作alert(oUpdated || false)我想他和alert(oUpdated || true)的結(jié)果都是一樣的,同時(shí)返回false。這里為什么返回的false,我想不用說了,他返回的是oUpdated的值,不是oUpdated這個(gè)Boolean對(duì)象。這是由于||操作符決定了這個(gè)結(jié)果,首先會(huì)判斷oUpdated,因?yàn)樗怯肂oolean創(chuàng)建的一個(gè)的對(duì)象,Boolean表達(dá)式?jīng)Q定了oUpdated永遠(yuǎn)是true,所以alert(oUpdated || false)時(shí)就會(huì)返回oUpdated,此時(shí)既然要返回oUpdated,當(dāng)然他返回的只能是oUpdated的值false了。
我想我這樣說應(yīng)該是很明白了吧!_:)
如果還不能理解的話,可以給我發(fā)站類信繼續(xù)交流的........
添加回答
舉報(bào)
