To prove the difference, here are the situations I looked at:
// Straight Equality  == true; // false  == false; // true // Conversion Boolean(); // true ! Boolean(); // false // Implied Conversion ! ; // false !! ; // true
As you can see, the first straight equality checks behave as if an empty array is false, which is common in back end languages, such as Groovy. However, transposing an empty array to a boolean asserts it to be true, which is consistent with using the forced conversion with the bang operator (!).
Why this matters is that using an if statement behaves in the latter case, which sets an empty array to true. Lessons learned from this experiment are to always check if an array is empty (through a
.length call) to determine if the logic should succeed.