javascript中關(guān)于&& 和 || 表達(dá)式的小技巧分享
如果你還是新手, 而且讀完所有這些技巧的詳解和每種技巧是如果工作的以后運(yùn)用它們, 你會(huì)寫出更加簡(jiǎn)練高效的JavaScript程序.
確實(shí), JavaScript高手已經(jīng)運(yùn)用這些技巧寫出了很多強(qiáng)大, 高效的JavaScript程序. 但是你可以這樣.
強(qiáng)大的 && 和 || 表達(dá)式
你可能在JavaScript庫(kù)和JavaScript框架中已經(jīng)見過它們了, 那么我們先由幾個(gè)基本的例子開始:
例子1. || (或)
設(shè)置默認(rèn)值, 通常用
function documentTitle(theTitle) {
if (!theTitle) {
theTitle = "Untitled Document";
}
}
用這代替:
function documentTitle(theTitle) {
theTitle = theTitle || "Untitled Document";
}
解析:
首先, 閱讀以下的"提示"框復(fù)習(xí)JavaScript是如何判斷布爾值的
|| 操作符首先從左開始判斷表達(dá)式的真假, 如果為真, 馬上返回左邊表達(dá)式返回的值; 如果左邊表達(dá)式被判斷為假, 則繼續(xù)判斷右邊的表達(dá)式, 并返回右邊表達(dá)式的值
如果theTitle被判斷為假, 會(huì)返回右邊表達(dá)式的值. 換句話說, 如果theTitle變量被判斷為真, 則返回theTitle的值.
! 提示:
JavaScript判斷為假的值: null, false, 0, undefined, NaN 和 ""(空字符串).
記住像Infinity(無限大)這種 NaN 類的值是被判斷為真不是假. 然而, NaN被判斷為假.
除了以上這些, 其他值全部被判斷為真.
例子2. &&(并)
不要這么做:
function isAdult(age) {
if (age && age > 17) {
return true;
} else {
return false;
}
}
用這代替:
function isAdult(age) {
return age && age > 17;
}
解析:
&& 操作符從左開始判斷表達(dá)式, 如果左邊的表達(dá)式被判斷為假, 這馬上返回false, 不管右邊的表達(dá)式是否為真.
如果左邊的表達(dá)式為真, 則繼續(xù)判斷右邊的表達(dá)式, 然后返回右邊表達(dá)式結(jié)果
這變得越來越有趣了
例子3.
不要這樣做:
if (userName) {
logIn(userName);
} else {
signUp();
}
用這代替:
userName && logIn(userName) || signUp();
解析:
如果userName為真, 調(diào)用logIn函數(shù)并傳遞userName變量
如果userName為假, 調(diào)用logIn函數(shù)不傳遞任何變量
例子4.
不要這樣做:
var userID;
if (userName && userName.loggedIn) {
userID = userName.id;
} else {
userID = null;
}
用這代替:
var userID = userName && userName.loggedIn && userName.id;
解析:
如果userName為真, 則調(diào)用user.loggedIn, 并檢查user.loggedIn是否為真; 如果返回真, 則返回第三個(gè)表達(dá)式的返回值
如果userName為空, 返回null
以上所述就是本文給大家分享的第一個(gè)javascript小技巧了,希望大家能夠喜歡。
相關(guān)文章
創(chuàng)建與框架無關(guān)的JavaScript插件
這篇文章主要介紹了創(chuàng)建與框架無關(guān)的JavaScript插件,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下2020-12-12
javascript強(qiáng)制彈出新窗口實(shí)現(xiàn)代碼
javascript強(qiáng)制彈出新窗口,主要是利用的動(dòng)態(tài)創(chuàng)建鏈接。2009-12-12
解決layui頁(yè)面按鈕點(diǎn)擊無反應(yīng),也不報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決layui頁(yè)面按鈕點(diǎn)擊無反應(yīng),也不報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
給事件響應(yīng)函數(shù)傳參數(shù)的四種方式小結(jié)
這篇文章主要介紹了給事件響應(yīng)函數(shù)傳參數(shù)的四種方式。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
eval(function(p,a,c,k,e,d)系列解密javascript程序
在網(wǎng)上下載源代碼時(shí),很可能發(fā)現(xiàn)代碼里的JS腳本看不懂,這是由于JS加密造成的。如果你發(fā)現(xiàn)JS是以eval(function(p,a,c,k,e,r){e=function(c)開頭的,看到這個(gè)頁(yè)面你就可以解決他2007-04-04
JS中‘hello’與new String(‘hello’)引出的問題詳解
這篇文章主要給大家介紹了關(guān)于JS中'hello'與new String('hello')引出的問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08
JS實(shí)現(xiàn)電影票選座的項(xiàng)目示例
電影院選座基本上每個(gè)人都用到過,本文主要介紹了JS實(shí)現(xiàn)電影票選座的項(xiàng)目示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的方法
這篇文章主要介紹了js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的方法,以實(shí)例形式講述了js實(shí)現(xiàn)數(shù)字每三位加逗號(hào)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02

