Truthy 與 Falsy


Posted by hoyi-23 on 2021-05-19

在 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)變成一個物件的形式

#truthy #falsy #真值 #假值







Related Posts

[JavaScript] ES6:Destructuring 解構

[JavaScript] ES6:Destructuring 解構

2048 專案

2048 專案

7天搞懂JS進階議題: 目錄

7天搞懂JS進階議題: 目錄


Comments