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 )