優(yōu)雅的編程「If語句」

隨著項目代碼量的增多,如何優(yōu)化項目代碼的健壯性冕广,是一直縈繞在腦海里,卻沒有停下來好好考慮的事情偿洁∪龊海總會遇到某一段函數(shù)的變量對象就突然找不到屬于它的方法了,排除半天涕滋,發(fā)現(xiàn)參數(shù)不知道什么時候變成了undefined睬辐。而對于書寫if(){}總覺得性價比不高,書寫麻煩宾肺,占用空間溯饵,丑!于是總結(jié)許多經(jīng)常需要寫 if語句锨用,但可以用其他代替的情況瓣喊。主要是變量賦值判斷,函數(shù)執(zhí)行判斷黔酥,多種條件判斷藻三。

? if 條件語句

  • 邏輯運算符簡化 -- 通過參數(shù)判斷是否執(zhí)行函數(shù)
    編寫代碼的過程中洪橘,我們經(jīng)常面對的問題可能就是某一個函數(shù)所需要的變量可能會因為是undefined導(dǎo)致代碼報錯,按照一般的編程習慣可能更喜歡寫if(Vue ){ console.error("blabla··")},說實話棵帽,寫的我手疼····熄求。而在Vue的源碼中經(jīng)常看到類似這樣的一段代碼Vue && console.error("Vue is undefined")逗概。
    在邏輯判斷過程中弟晚,其實也函數(shù)執(zhí)行的過程
·常用寫法
if(someThing){
    toDo();
}
·優(yōu)雅寫法
someThing && toDo();
-  邏輯或(||)
只要第一個值的布爾值為false逾苫,就會永遠執(zhí)行第二位的toDo()函數(shù)卿城。
邏輯或?qū)儆诙搪凡僮鳎谝粋€值為true時铅搓,不再執(zhí)行第二位的toDo()函數(shù)瑟押,且返回第一個值。
  - 邏輯與(&&)
只要第一個值的布爾值為true星掰,那么永遠返回第二個值多望。
邏輯與屬于短路操作,第一個值為false時氢烘,不再執(zhí)行第二位的toDo()函數(shù)怀偷,且返回第一個值。
  • 邏輯運算簡化多中情況下的變量賦值
var x = a || b 等價于:
var x;
if(a){
    x = a;
} else if(b){
    x = b;
} 
var x = a && b 等價于:
var x = a;
if(a){
    x = b;
}
  • 三目運算
    if(a === true){
      a ="真"
    }else{
    a ="假"
    }
    相當于三目運算 a === true ? "真" : "假"
    
  • switch/case
    當條件判斷數(shù)量較大時播玖,可以采用 switch/case代替一長串的eles if(){}
switch (res.state) {
        case 'SUCCESS':
            //TODO
            break;
        case 'FAIL':
            //TODO
            break;
        default :
            //TODO
    }
  • 變量默認值

常用情況是在函數(shù)內(nèi)部椎工,形參作為變量傳入,但這個參數(shù)也可能不被傳入蜀踏,這時候我們可能就需要寫 if(!someName){someName ="rico_wang"}來命名參數(shù)的默認值晋渺,實際上 someName = someName || "rico_wang"通過邏輯運算符也可以達到同樣的效果。

  • 當條件數(shù)量較多脓斩,但結(jié)果可能有共通性時
##例如
var name= null;
if(a = 1){
name = "wang"
}else if(a =2 ){
name = "li"
}else if(a = 3){
name = "wang"
}else if(a = 4){
name = "li"
}

完全可以簡化為:

var name= null;
if(a = 1|| a= 3 ){
name = "wang"
}else if(a = 2 || a = 4){
name = "li"
}

總結(jié):那么如何準確的選擇更簡潔的書寫方式呢
1、用作函數(shù)執(zhí)行前畴栖,參數(shù)存在與否的判斷随静,防止程序出錯
2、變量賦值吗讶,條件情況只有一種時 使用雙目運算對變量進行賦值
3燎猛、變量賦值,條件情況為多種照皆,僅選擇其中一種情況賦值
4重绷、在 if 條件情況較多,可使用switch/case代替

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膜毁,一起剝皮案震驚了整個濱河市昭卓,隨后出現(xiàn)的幾起案子愤钾,更是在濱河造成了極大的恐慌,老刑警劉巖候醒,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件能颁,死亡現(xiàn)場離奇詭異,居然都是意外死亡倒淫,警方通過查閱死者的電腦和手機伙菊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敌土,“玉大人镜硕,你說我怎么就攤上這事》蹈桑” “怎么了兴枯?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長犬金。 經(jīng)常有香客問我念恍,道長,這世上最難降的妖魔是什么晚顷? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任峰伙,我火速辦了婚禮,結(jié)果婚禮上该默,老公的妹妹穿的比我還像新娘瞳氓。我一直安慰自己,他們只是感情好栓袖,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布匣摘。 她就那樣靜靜地躺著,像睡著了一般裹刮。 火紅的嫁衣襯著肌膚如雪音榜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天捧弃,我揣著相機與錄音赠叼,去河邊找鬼。 笑死违霞,一個胖子當著我的面吹牛嘴办,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播买鸽,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涧郊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了眼五?” 一聲冷哼從身側(cè)響起妆艘,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤彤灶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后双仍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枢希,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年朱沃,在試婚紗的時候發(fā)現(xiàn)自己被綠了苞轿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡逗物,死狀恐怖搬卒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翎卓,我是刑警寧澤契邀,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站失暴,受9級特大地震影響坯门,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逗扒,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一古戴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矩肩,春花似錦现恼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刽酱,卻和暖如春喳逛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棵里。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工润文, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衍慎。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像皮钠,于是被迫代替她去往敵國和親稳捆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容