在 if 判斷式內比對是否為 true 或 false
if(1==1){
console.log('Hi') // Hi
}
若今天將 (1 == 1) 改為一個數值呢?
if(1){
console.log('Hi') // Hi
}
if(5){
console.log('Hi') // Hi
}
改為一個數值還是會正常的回傳,那是因為它是 Truthy 真值。
什麼是 真值?
以布林的角度,只要轉換後的值為真的值。
所有值都是真值,除非有被定義為假值(false、0、null、undefined、NaN)
空陣列、空物件是真值。
空字串是假值,但裡面若有空格就代表有內容,就是真值。
什麼是 假值?
以布林的角度,轉換後的值為假的值。
除了 false、0、null、undefined、NaN、'' 一定為假值。
範例
if(5){
console.log('Hi')
}else{
console.log('Bye')
} // Hi
if(''){
console.log('Hi')
}else{
console.log('Bye')
} // Bye
if(' '){
console.log('Hi')
}else{
console.log('Bye')
} // Hi
if(0){
console.log('Hi')
}else{
console.log('Bye')
} // Bye
下面的例子使用包裹物件,但在建立原始型別時,應該盡量避免使用包裹物件喔!
if(new Number(0)){
console.log('Hi')
}else{
console.log('Bye')
} // Hi
//因為 new Number(0) 變成一個物件的形式
if(new Boolean(false)){
console.log('Hi')
}else{
console.log('Bye')
} // Hi
//因為 new Boolean(false)變成一個物件的形式