Empty arrays are true but they\'re also equal to false.
You're testing different things here.
if (arr)
called on object (Array is instance of Object in JS) will check if the object is present, and returns true/false.
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 ""
.
This is because toString
called on Array returns Array.join()
, and empty string is one of falsy values in JavaScript.