點燈坊

失くすものさえない今が強くなるチャンスよ

如何手動轉型成 Boolean ?

Sam Xiao's Avatar 2020-02-16

ECMAScript 提供 3 種方式手動轉型成 Boolean。

Version

ECMAScript 5

Boolean Function

Boolean(1) // ?
Boolean(0) // ?

Boolean('') // ?
Boolean('abc') // ?

Boolean({}) // ?
Boolean([]) // ?

Boolean(null) // ?
Boolean(undefined) // ?
Boolean(NaN) // ?

使用 Boolean() 將任意值轉型成 Boolean。

Boolean() 可當成 constructor function,也能當成普通 function 用,在轉型時沒搭配 new,故當成普通 function 當轉型

boolean000

Ternary Operator

1 ? true : false // ?
0 ? true : false // ?

'' ? true : false // ?
'abc' ? true : false // ?

;({}) ? true : false // ?
;([]) ? true : false // ?

null ? true : false // ?
undefined ? true : false // ?
NaN ? true : false // ?

當使用 ?:  時,會促使 obj 自動轉型成 Boolean。

bool001

Not Operartor

!!1 // ?
!!0 // ?

!!'' // ?
!!'abc' // ?

!!{} // ?
!![] // ?

!!null // ?
!!undefined // ?
!!NaN // ?

第一個 ! 會促使 obj 自動轉型成 Boolean,但結果是反向的,所以還要再搭配一次 !變成正向。

boolean002

Conclusion

  • 實務上 Boolean()!! 方式較常使用
  • 以可讀性而言,Boolean function 語意最好,就算不熟 ECMAScript 也能看懂
  • !! 雖然最精簡,但動用了 ECMAScript 語言特性,若不熟 ECMAScript 會看不懂

Reference

Dr.Axel Rauschmayer, Speaking JavaScript