關(guān)于if

if語句是編程語言最常用的語句枯芬,語法绍坝。

if(condition){
    //true statement
}else {
    //false statement
}

if 結(jié)構(gòu)

if結(jié)構(gòu)先判斷一個表達式的布爾值,然后根據(jù)布爾值的真?zhèn)瘟旎瑘?zhí)行不同的語句米同。所謂布爾值骇扇,指的是 JavaScript 的兩個特殊值,true表示真面粮,false表示偽少孝。

if (布爾值)
  語句;

// 或者
if (布爾值) 語句;
對于括號里的表達式,會被強制轉(zhuǎn)換為布爾類型

上面是if結(jié)構(gòu)的基本形式熬苍。需要注意的是稍走,“布爾值”往往由一個條件表達式產(chǎn)生的,必須放在圓括號中柴底,表示對表達式求值婿脸。如果表達式的求值結(jié)果為true,就執(zhí)行緊跟在后面的語句柄驻;如果結(jié)果為false狐树,則跳過緊跟在后面的語句。

if (m === 3)
  m = m + 1;

上面代碼表示鸿脓,只有在m等于3時抑钟,才會將其值加上1。

這種寫法要求條件表達式后面只能有一個語句野哭。如果想執(zhí)行多個語句在塔,必須在if的條件判斷之后,加上大括號拨黔,表示代碼塊(多個語句合并成一個語句)蛔溃。

if (m === 3) {
  m += 1;
}

建議總是在if語句中使用大括號,因為這樣方便插入語句篱蝇。

注意贺待,if后面的表達式之中,不要混淆賦值表達式(=)态兴、嚴格相等運算符(===)和相等運算符(==)狠持。尤其是賦值表達式不具有比較作用。

var x = 1;
var y = 2;
if (x = y) {
  console.log(x);
}
// "2"

上面代碼的原意是瞻润,當x等于y的時候喘垂,才執(zhí)行相關(guān)語句。但是绍撞,不小心將嚴格相等運算符寫成賦值表達式正勒,結(jié)果變成了將y賦值給變量x,再判斷變量x的值(等于2)的布爾值(結(jié)果為true)傻铣。

這種錯誤可以正常生成一個布爾值章贞,因而不會報錯。

if (x = 2) { // 不報錯
if (2 = x) { // 報錯

為了避免這種情況非洲,有些開發(fā)者習(xí)慣將常量寫在運算符的左邊鸭限,這樣的話蜕径,一旦不小心將相等運算符寫成賦值運算符,就會報錯败京,因為常量不能被賦值兜喻。

if…else 結(jié)構(gòu)

if代碼塊后面,還可以跟一個else代碼塊赡麦,表示不滿足條件時朴皆,所要執(zhí)行的代碼。

if (m === 3) {
  // 滿足條件時泛粹,執(zhí)行的語句
} else {
  // 不滿足條件時遂铡,執(zhí)行的語句
}

上面代碼判斷變量m是否等于3,如果等于就執(zhí)行if代碼塊晶姊,否則執(zhí)行else代碼塊扒接。

對同一個變量進行多次判斷時,多個if...else語句可以連寫在一起帽借。

if (m === 0) {
  // ...
} else if (m === 1) {
  // ...
} else if (m === 2) {
  // ...
} else {
  // ...
}

else代碼塊總是與離自己最近的那個if語句配對珠增。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
else console.log('world');

上面代碼不會有任何輸出,else代碼塊不會得到執(zhí)行砍艾,因為它跟著的是最近的那個if語句,相當于下面這樣巍举。

if (m !== 1) {
  if (n === 2) {
    console.log('hello');   
  } else {
    console.log('world');
  }
}

如果想讓else代碼塊跟隨最上面的那個if語句脆荷,就要改變大括號的位置。

if (m !== 1) {
  if (n === 2) {
    console.log('hello');   
  }
} else {
  console.log('world');
}
// world
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懊悯,一起剝皮案震驚了整個濱河市蜓谋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炭分,老刑警劉巖桃焕,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捧毛,居然都是意外死亡观堂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門呀忧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來师痕,“玉大人,你說我怎么就攤上這事而账∫确兀” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵泞辐,是天一觀的道長笔横。 經(jīng)常有香客問我竞滓,道長,這世上最難降的妖魔是什么吹缔? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任商佑,我火速辦了婚禮,結(jié)果婚禮上涛菠,老公的妹妹穿的比我還像新娘莉御。我一直安慰自己,他們只是感情好俗冻,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布礁叔。 她就那樣靜靜地躺著,像睡著了一般迄薄。 火紅的嫁衣襯著肌膚如雪琅关。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天讥蔽,我揣著相機與錄音涣易,去河邊找鬼。 笑死冶伞,一個胖子當著我的面吹牛新症,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播响禽,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼徒爹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芋类?” 一聲冷哼從身側(cè)響起隆嗅,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侯繁,沒想到半個月后胖喳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贮竟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年丽焊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坝锰。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡粹懒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出顷级,到底是詐尸還是另有隱情凫乖,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站帽芽,受9級特大地震影響删掀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜导街,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一披泪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搬瑰,春花似錦款票、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翼悴,卻和暖如春缚够,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹦赎。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工谍椅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人古话。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓雏吭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陪踩。 傳聞我的和親對象是個殘疾皇子思恐,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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