array
if (arr) 會被呼叫,是因為object,Array is instance of Object in JS
In JavaScript, all objects are truthy , even new Boolean(false), empty arrays and empty objects
Boolean(new Boolean(false))
//true
Boolean([])
//true
Boolean({})
//true
When you call if (arr == false) you compare values of this object and the primitive false value. Internally, arr.toString() is called, which returns an empty string "".
但當你是在比較value時, Array裡的 toString會被呼叫
This is because toString called on Array returns Array.join(), and empty string is one of falsy values in JavaScript.
當Array的 toString被呼叫, 會回傳Array.join( ),然後空字串就被回傳,所以 == false 就成立了
The following values are always falsy:
- false.
- 0 (zero)
- ' ' or " " (empty string)
- null.
- undefined.
- NaN (e.g. the result of 1/0 )
