AI solution for JavaScript Quiz on BFE.dev
46. Implicit Coercion IV
The code below outputs false
.
Explanation:
In JavaScript, when comparing values of different data types with the double equals ==
operator, coercion occurs. It means if the operands are not of the same type, JavaScript will try to convert one type to match the other type.
In this code, foo
is an array with one element 0
. When we compare foo
with true
, JavaScript will try to convert true
to a number. Notice that the element 0
has falsy value in JavaScript, which means when coerced to a boolean, it is converted to false
. Therefore, foo == true
becomes 0 == 1
, which returns false
.
Similarly, when we compare foo
with false
, JavaScript will try to convert false
to a number, which equals 0
. Thus, foo == false
actually becomes 0 == 0
, which returns true
. However, the condition in the if
statement is if (foo)
, which evaluates to true
because foo
is not an empty array or null
or undefined
. Therefore, the code executes the first branch, and false
is printed to the console.