a == b // false, because they are different array objects.
!object -> !true -> false -> 0
object -> empty array -> 0
which will lead to comparison 0 == 0, which gives true.
In case if one of the array was not empty, for example var a = , then second and third comparison would be converted to 1 == 0, and that will result false.