利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精簡第1/2頁
JScript對(duì)于邏輯運(yùn)算的true|false是這么定義的:
- 所有對(duì)象都被認(rèn)為是 true。
- 字符串當(dāng)且僅當(dāng)為空(""或'')時(shí)才被認(rèn)為是 false。
- null 和未定義的均被認(rèn)為是 false。
- 數(shù)字當(dāng)且僅當(dāng)為 0 時(shí)才是 false。
可是邏輯運(yùn)算符||和&&雖然遵循上面的定義規(guī)則,但是它們返回的值卻很有意思。
對(duì)于&&運(yùn)算,按照上面的規(guī)則,表達(dá)式 if ( 'abc' && '123' && new Date() ) 是執(zhí)行true分支,可是這個(gè)表達(dá)式如果寫成:
var value = 'abc' && '123' && new Date();結(jié)果value=Fri Jan 21 00:01:17 UTC+0800 2005,原它從左到右檢測,如果到了最后一個(gè)表達(dá)式也是為true的,就返回那個(gè)表達(dá)式。
對(duì)于||運(yùn)算同理,對(duì)于下面的表達(dá)式:
var value1 = 'abc' || '123' || null || false;
var value2 = null || '' || false || 'ok'; 結(jié)果value1='abc',value2='ok'。這是因?yàn)閨|運(yùn)算會(huì)有"短路"特性,他也是從左向右檢測,只不過它是一但發(fā)現(xiàn)有為true的值,就立即返回該表達(dá)式。
這樣的特性可以幫組我們寫出精簡的代碼,可是同時(shí)也帶來代碼不便于閱讀維護(hù)的問題。
由于我手頭暫時(shí)沒有NS和moz什么的瀏覽器,不知道標(biāo)準(zhǔn)JavaScript是否也是這樣支持的?如果您方便的話,請(qǐng)告如我運(yùn)行后的結(jié)果。
相關(guān)文章
js使用對(duì)象直接量創(chuàng)建對(duì)象的代碼
js使用對(duì)象直接量創(chuàng)建對(duì)象的代碼...2007-09-09
JS實(shí)現(xiàn)無限級(jí)網(wǎng)頁折疊菜單(類似樹形菜單)效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)無限級(jí)網(wǎng)頁折疊菜單(類似樹形菜單)效果代碼,涉及JavaScript基于鼠標(biāo)事件實(shí)現(xiàn)針對(duì)頁面元素結(jié)點(diǎn)的遍歷及樣式操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
javascript 一段左右兩邊隨屏滾動(dòng)的代碼
在不少的網(wǎng)站使用了這種技術(shù),一般就是兩邊的一些三個(gè)小塊排一起的廣告。2009-06-06
微信小程序?qū)崿F(xiàn)隨機(jī)驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)隨機(jī)驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
JS實(shí)現(xiàn)彈出浮動(dòng)窗口(支持鼠標(biāo)拖動(dòng)和關(guān)閉)實(shí)例詳解
這篇文章主要介紹了JS實(shí)現(xiàn)彈出浮動(dòng)窗口,可支持鼠標(biāo)拖動(dòng)和關(guān)閉的功能,界面美觀大方,涉及javascript動(dòng)態(tài)創(chuàng)建對(duì)話框的相關(guān)技巧,需要的朋友可以參考下2015-08-08
使用JavaScript監(jiān)視有沒有被刷新后跳轉(zhuǎn)其他頁面
這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript監(jiān)視有沒有被刷新后跳轉(zhuǎn)其他頁面,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2025-01-01
JavaScript優(yōu)化以及前段開發(fā)小技巧
隨著前端技術(shù)的發(fā)展,前端業(yè)務(wù)越來越繁重,這大大增加了JS代碼量。因此,要提高Web的性能,我們不僅需要關(guān)注頁面加載的時(shí)間,還要注重在頁面上操作的響應(yīng)速度。那么,接下來我們討論幾種能夠提高JavaScript效率的方法。2017-02-02

