ECMAScript 之 Truthy 與 Falsy Value
ECMAScript 除了有 Boolean
Primitive Type 外,還有獨特的 Truthy Value 與 Falsy Value 概念;簡單的說,其他 type 也能自動轉成 Boolean,這使得 if
與 &&
與 ||
有了更多的應用。
Version
ECMAScript 5
Falsy Value
會自動轉型為 false
的值
以下 6 種值會視為 Falsy Value:
- Boolean :
false
- Empty String :
''
- Empty Number :
0
,NaN
- Non-Value :
null
、undefined
false
視為 Falsy Value 理所當然,但剩下 5 種也視為 Falsy Value 就比較特別。
Truthy Value
會自動轉型成 true
的值
除此以上 6 種外,剩下都是 Truthy Value:
- Boolean :
true
- Non Empty String :
'foo'
- Non Empty Number :
42
、 - Object :
{}
、{name: 'Sam'}
- Array :
[]
、[1, 2, 3]
其中有幾個比較特別:
Infinity
無論是 Infinity
或 -Infinity
,都是 Truthy Value。
Object
所有 object
,只要不是 null
都是 Truthy Value,無論是 empty object {}
,或 non-empty object {name: 'Sam'}
!!
會將任意值轉成 Boolean。
Array
所有 array 都是 Truthy Value,無論是 empty array []
,或 non-empty array 都是 true
。
Conclusion
- 大體上
空值
都是 Falsy Value,但有兩個特別:empty object 與 empty array 都是 Truthy Value
Reference
ofollow,noindex">MDN , sary/Truthy" target="_blank" rel="nofollow,noindex">Truthy