The boolean primitive is a logical data type with only two values: true
and
false
.
Boolean object
All values in JavaScript are implicitly true
or false
. The Boolean
object
can be used to coerce a value to a
true
or false
boolean, based on the implicit true or false state of that
value:
Boolean( "A string literal" );
> true
Values that result in false
include 0
, null
, undefined
, NaN
, an empty
string (""
), an omitted value, and a false
boolean. All other values result
in true
.
Boolean( NaN );
> false
Boolean( -0 );
> false
Boolean( 5 );
> true
Boolean( "false" ); // the value `"false"` is a string, and therefore implicitly true.
> true
Avoid using the Boolean
object as a constructor. It creates an object
containing a boolean value, not the boolean primitive you might expect:
const falseBoolean = Boolean( 0 );
const falseObject = new Boolean( 0 );
console.log( falseBoolean );
> false
console.log( falseObject );
> Boolean { false }
falseObject.valueOf();
> false
Because all objects are inherently truthy,
the resulting boolean object always loosely evaluates to true, even if it
contains a false
value:
const falseBoolean = Boolean( 0 );
const falseObject = new Boolean( 0 );
console.log( falseBoolean == true );
> false
console.log( falseObject == true );
> false
console.log( !!falseObject );
> true
Check your understanding
Which of the following returns false
?
null
"none"
0