The logical operators in JavaScript actually evaluate to one of the two objects. When you use a || b
it evaluates to b
if a
is false, or to a
if a
is true. Thus a || []
will be a
if a
is any value that is true, or []
if a
is any value that is false.
It's much more obvious to use if (!a) { a = [] };