新手不知道的JavaScript技巧 - 條件語(yǔ)句的簡(jiǎn)寫(xiě)技巧

Banner

可能入坑不久的同學(xué)還會(huì)用著if (value !== null || Value !== undefined)這樣的判斷語(yǔ)句, 而實(shí)際上只要理解判定的規(guī)則, 善用規(guī)則, 就能大大的提高代碼的可讀性. 接下來(lái)讓我們深入學(xué)習(xí)一下.


大多編程語(yǔ)言中最為常用的一個(gè)語(yǔ)句就是if語(yǔ)句, 這種條件語(yǔ)句是通過(guò)判斷指定表達(dá)式的值來(lái)決定執(zhí)行還是跳過(guò)某些語(yǔ)句. 它的語(yǔ)法如下:

  if (Expression) {
    statement
  }

其中Expression(表達(dá)式/條件)可以是任意表達(dá)式或者值.

  1. 首先它會(huì)解析表達(dá)式的值
  2. 如果表達(dá)式是無(wú)法解析的, 會(huì)報(bào)ReferenceError的錯(cuò)誤并停止. 如果不是則繼續(xù).
  3. 判斷值的引用類(lèi)型, 如果是布爾值, 字符串和符號(hào)則繼續(xù). nullundefined永遠(yuǎn)都返回 false.
  4. 將值傳入toBoolean(exprValue)根據(jù)下面的規(guī)則轉(zhuǎn)換為布爾值.
value Boolean
未定義(Undefined) false
空值(null) false
布爾值(Boolean) 返回參數(shù)本身
數(shù)字(Number) 如果參數(shù)是+0, -0NaN意蛀,則返回false; 否則返回true
字符串(String) 如果參數(shù)是空字符串(長(zhǎng)度為零)升酣,則返回false; 否則返回true
Symbol 返回 true
Object 返回 true

這里我們得出undefined, null, NaN, 空字符串, 和數(shù)字 0 都是過(guò)不了條件語(yǔ)塊的規(guī)則, 因此我們可以利用這一點(diǎn)來(lái)對(duì)代碼進(jìn)行簡(jiǎn)寫(xiě).

var userName = 'hello';
var flag = false;

// bad code
if (value != undefined) {
  ...
}

// bad code
if (value !== undefined || value !== null || value !== false) {
  ...
}

// good code
if (userName) {
  something...
}

// flag鎖, 利用取反轉(zhuǎn)換布爾值
if (!flag) {
  flag = true;
  something...
}

相同的, 也沒(méi)有必要去使用==規(guī)范不推薦的方式去隱式轉(zhuǎn)換類(lèi)型, 這種規(guī)則同樣適用于三目運(yùn)算符, switch等條件運(yùn)算中去... 這樣看起來(lái)是不是自己的代碼整潔多了呢~


后記: 才疏學(xué)淺, 如果有什么說(shuō)的不對(duì)或者需要改進(jìn)的地方, 可以給我留言大家一起交流. 原創(chuàng)不易, 如果文章對(duì)你有幫助的話(huà)就隨手點(diǎn)個(gè)贊鼓勵(lì)一下唄~
最后安利一下自己的個(gè)人博客, 不定期更新自己踩的坑和一些冷門(mén)的小知識(shí): https://anran758.github.io/blog/

參考資料
ECMA-262 官方文檔
http://www.ecma-international.org/ecma-262/6.0/#sec-if-statement

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子摇庙,更是在濱河造成了極大的恐慌蔚携,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锋边,死亡現(xiàn)場(chǎng)離奇詭異侈净,居然都是意外死亡尊勿,警方通過(guò)查閱死者的電腦和手機(jī)僧凤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)畜侦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人躯保,你說(shuō)我怎么就攤上這事旋膳。” “怎么了途事?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵验懊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我尸变,道長(zhǎng)义图,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任召烂,我火速辦了婚禮碱工,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己怕篷,他們只是感情好历筝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著廊谓,像睡著了一般梳猪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒸痹,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天春弥,我揣著相機(jī)與錄音,去河邊找鬼叠荠。 笑死惕稻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝙叛。 我是一名探鬼主播俺祠,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼借帘!你這毒婦竟也來(lái)了蜘渣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肺然,失蹤者是張志新(化名)和其女友劉穎蔫缸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體际起,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拾碌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了街望。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片校翔。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灾前,靈堂內(nèi)的尸體忽然破棺而出防症,到底是詐尸還是另有隱情,我是刑警寧澤哎甲,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布蔫敲,位于F島的核電站,受9級(jí)特大地震影響炭玫,放射性物質(zhì)發(fā)生泄漏奈嘿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一吞加、第九天 我趴在偏房一處隱蔽的房頂上張望裙犹。 院中可真熱鬧酝惧,春花似錦、人聲如沸伯诬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盗似。三九已至哩陕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赫舒,已是汗流浹背悍及。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留接癌,地道東北人心赶。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缺猛,于是被迫代替她去往敵國(guó)和親缨叫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 1、標(biāo)識(shí)符 標(biāo)識(shí)符是指變量有咨、函數(shù)琐簇、屬性的名字,或函數(shù)的參數(shù)座享。 格式規(guī)則: 第一個(gè)字符必須是一個(gè)字母婉商、下劃線(_)或...
    霜天曉閱讀 693評(píng)論 0 0
  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,216評(píng)論 0 4
  • 前端07班 王語(yǔ)句JavaScript程序的執(zhí)行單位為行(line),也就是一行一行地執(zhí)行渣叛。一般情況下丈秩,每一行就是...
    ea203453e188閱讀 882評(píng)論 0 4
  • http://www.mamicode.com/info-detail-877996.htmlhttp://blo...
    健健鍋閱讀 209評(píng)論 0 1
  • 5.1突然想回家,雖怕旅途勞累诗箍,還是—拍即合地回了趟家癣籽。三天挽唉,看似短滤祖,其實(shí)回趟家亦足夠。 回家前瓶籽,鼓勵(lì)娃們將作業(yè)完...
    JC賈閱讀 419評(píng)論 2 2