關(guān)于if(xx)和 a==b的判斷

if的判斷

1.if(number)
if后的括號(hào)里的表達(dá)式會(huì)被強(qiáng)制轉(zhuǎn)換為布爾類型

數(shù)據(jù)類型 轉(zhuǎn)換結(jié)果
Undefined false
Null false
Boolean 直接判斷
Number +0, ?0, 或者 NaN 為 false, 其他為 true
String 空字符串為 false,其他都為 true
Object true

例:當(dāng) if(number),0、NaN為false,其他值為true

var a = 5
if(a){
    console.log('true')
} // true
a = 1
if(a){
    console.log('true')
} // true
a = 0
if(a){
    console.log('true')
} // false
a = -1
if(a){
    console.log('true')
} //false
a = NaN
if(a){
    console.log('true')
} //false

2.if(string)
當(dāng) if(string),空字符串為false,其他為true

if('hello'){
    console.log('true')
} // true
if('   '){
    console.log('true')
} // true
if(''){
    console.log('true')
} // false
if('0.00'){
    console.log('true')
}//true

3.if(boolean)
當(dāng) if(boolean),直接判斷

if(true){
    console.log('true')
} // true
if(false){
    console.log('true')
} // false

4.if(object)
當(dāng) if(object),為true

if([1,3,4]){
    console.log('true')
} // true
function f(){
   var b = 1 + 2;
   return b; 
}
if(f()){
    console.log('true')
} //true

5.if(undefined)
當(dāng) if(undefined),為false

if(undefined){
    console.log('true')
} //false

6.if(null)
當(dāng) if(null),為false

if(null){
    console.log('true')
} //false

a == b 的判斷

對(duì)于相同類型的a、b,相等的判斷較簡(jiǎn)單。以下主要討論不同數(shù)據(jù)類型的a、b之間進(jìn)行相等運(yùn)算時(shí)的判斷。

  1. string == number
    結(jié)果為 toNumber(a) == b ,當(dāng)a無法轉(zhuǎn)換為number時(shí)判斷相等為false

"" == 0 //true
" " == 0 //true
"hello" == 0 //false
"hello" == 1 //false
"2" == 2 //true

  1. boolean == (any)
    Boolean在相等運(yùn)算時(shí)會(huì)轉(zhuǎn)換為數(shù)值,true為1,false為0。

"" == true //false
"" == false //true
" " == true //false
"hello" == true //false
1 == true //true
0 == false //true
undefined == false //false
undefined == true //false
null == false //false
null == true //false

  1. object == number/string
    object會(huì)試圖使用valueOf和toString轉(zhuǎn)換后比較

var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == 1 //true
[] == 0 //true
[2] == 2 //true

  1. null == undefined //true

toNumber
undefined --> NaN
null --> 0
boolean --> true:1, false:0
string --> "abc":NaN,"123":123

總結(jié):

做相等運(yùn)算時(shí),一般傾向于將不同的數(shù)據(jù)類型都轉(zhuǎn)化為數(shù)值,或是轉(zhuǎn)化為相同的數(shù)據(jù)類型.

  • 如果兩個(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è)值是對(duì)象,一個(gè)是數(shù)字或字符串,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
    5. 其它就不相等了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • if(xx) if后的括號(hào)里的表達(dá)式會(huì)被強(qiáng)制轉(zhuǎn)換為布爾類型 number a = 1if(a){console.l...
    無人問津的呢喃閱讀 1,223評(píng)論 0 0
  • 一. if(xx)的判斷 JavaScript 遇到預(yù)期為布爾值的地方(比如if語(yǔ)句的條件部分),就會(huì)將非布爾值的...
    usopp醬閱讀 1,151評(píng)論 0 1
  • if條件判斷 if...else 條件判斷的語(yǔ)法如下:if (條件){當(dāng)條件為 true 時(shí)執(zhí)行的代碼}else{...
    Zouch在路上閱讀 519評(píng)論 0 0
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評(píng)論 0 13
  • 《極簡(jiǎn)投資》46%-100% 基金定投建議避開每月1-8日 因?yàn)闀?huì)碰到元旦,春節(jié),五一,十一假期,這期間基金業(yè)務(wù)暫...
    梅利醬閱讀 135評(píng)論 0 0

友情鏈接更多精彩內(nèi)容