if條件語句
JavaScript的威力在于可以根據(jù)人類給出的條件作出相應(yīng)的決策判斷抚岗,JavaScript使用條件語句來做判斷扒寄。
條件語句(conditional statement)通過判斷表達(dá)式的值來決定執(zhí)行還是跳過某些語句鱼鼓,包括if語句和switch語句。
if語句
最常見的就是if語句该编。if語句的條件只能放在圓括號內(nèi)迄本,條件的結(jié)果永遠(yuǎn)是一個(gè)布爾值,即只能是true或flase课竣〖问辏花括號中的語句不管有多少條,只有在條件的結(jié)果為true時(shí)才執(zhí)行稠氮。
if (expression) {
statements;
}
if語句根據(jù)表達(dá)式的值改變程序流程曹阔。當(dāng)expression的值為true時(shí)執(zhí)行在其后的代碼塊,當(dāng)expression的值為false時(shí)執(zhí)行else后的代碼塊隔披。
if (expression){
statements;
} else {
statements;
}
javascript中if/else匹配規(guī)則是:else總是和最近的if匹配
if (i == j){
if(j == k) {
console.log( 'i == k');
else {
console.log('i != j'); // error
}
if(xxx){
}
// 題目1:如下代碼輸出什么?
if ("hello") {
console.log("hello")
}
// 題目2:如下代碼輸出什么?
if ("") {
console.log('empty')
}
// 題目3:如下代碼輸出什么?
if (" ") {
console.log('blank')
}
// 題目4:如下代碼輸出什么?
if ([0]) {
console.log('array')
}
// 題目5:如下代碼輸出什么?
if('0.00'){
console.log('0.00')
}
括號里的表達(dá)式赃份,會強(qiáng)制轉(zhuǎn)為布爾值
原理
類型 | 結(jié)果 |
---|---|
undefined | flase |
null | false |
Boolean | 直接判斷 |
number | +0, ?0, 或者 NaN 為 false, 其他為 true |
string | 空字符串為 false,其他都為 true |
Object | true |
相等 ==
- 如果兩個(gè)值類型相同,則執(zhí)行嚴(yán)格相等的運(yùn)算
- 如果兩個(gè)值的類型不同
1.如果一個(gè)是null,一個(gè)是undefined抓韩,那么相等
2.如果一個(gè)是數(shù)字鹿鳖,一個(gè)是字符串癞埠,先將字符串轉(zhuǎn)為數(shù)字,然后比較
3.如果一個(gè)值是true/false則將其轉(zhuǎn)為1/0比較
4.如果一個(gè)值是對象,一個(gè)是數(shù)字或字符串尺锚,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
5.其它就不相等了
x == y
x | y | 結(jié)果 |
---|---|---|
null | undefined | true |
Number | String | x==toNumber(y) |
Boolean | (any) | toNumber(x)==y |
Object | String or Number | toPrimitive(x)==y |
otherwise | otherwise | false |
toNumber
類型 | 結(jié)果 |
---|---|
undefined | NaN |
Null | 0 |
Boolean | true -> 1,flase -> 0 |
String | "abc" -> NaN, "123" -> 123 |
toPrimitive
對于 Object 類型舅列,先嘗試調(diào)用 .valueOf 方法獲取結(jié)果胧瓜。 如果沒定義罚斗,再嘗試調(diào)用 .toString方法獲取結(jié)果