Empty arrays are true but they're also equal to false.
var arr = ;
if (arr) console.log("It's true!");
if (arr == false) console.log("It's false!");
if (arr && arr == false) console.log("...what??");
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