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 (布爾值) 語句;
上面是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