5.6.16.3 Boolean Expressions

 boolean-expression = expression 

Static Semantics. A <boolean-expression> is invalid if a Let coercion from the declared type of <expression> to Boolean is invalid. The declared type of a <boolean-expression> is Boolean.

Runtime Semantics.

§ If <expression> does not have the data value Null, <expression> is Let-coerced to Boolean, and the value of <expression> is this coerced value.

§ Otherwise, if <expression> has the data value Null, the value of <expression> is False.