Boolean
The Boolean
object represents a truth value: true
or false
.
Description
Boolean primitives and Boolean objects
For converting non-boolean values to boolean, use Boolean
as a function or use the double NOT operator. Do not use the Boolean()
constructor with new
.
const good = Boolean(expression);
const good2 = !!expression;
const bad = new Boolean(expression); // don't use this!
This is because all objects, including a Boolean
object whose wrapped value is false
, are truthy and evaluate to true
in places such as conditional statements. (See also the boolean coercion section below.)
if (new Boolean(true)) {
console.log("This log is printed.");
}
if (new Boolean(false)) {
console.log("This log is ALSO printed.");
}
const myFalse = new Boolean(false); // myFalse is a Boolean object (not the primitive value false)
const g = Boolean(myFalse); // g is true
const myString = new String("Hello"); // myString is a String object
const s = Boolean(myString); // s is true
Warning: You should rarely find yourself using Boolean
as a constructor.
Boolean coercion
Many built-in operations that expect booleans first coerce their arguments to booleans. The operation can be summarized as follows:
- Booleans are returned as-is.
undefined
turns intofalse
.null
turns intofalse
.0
,-0
, andNaN
turn intofalse
; other numbers turn intotrue
.0n
turns intofalse
; other BigInts turn intotrue
.- The empty string
""
turns intofalse
; other strings turn intotrue
. - Symbols turn into
true
. - All objects become
true
.
Note: A legacy behavior makes document.all
return false
when used as a boolean, despite it being an object. This property is legacy and non-standard and should not be used.
Note: Unlike other type conversions like string coercion or number coercion, boolean coercion does not attempt to convert objects to primitives.
In other words, there are only a handful of values that get coerced to false
— these are called falsy values. All other values are called truthy values. A value's truthiness is important when used with logical operators, conditional statements, or any boolean context.
There are two ways to achieve the same effect in JavaScript.
- Double NOT:
!!x
negatesx
twice, which convertsx
to a boolean using the same algorithm as above. - The
Boolean()
function:Boolean(x)
uses the same algorithm as above to convertx
.
Note that truthiness is not the same as being loosely equal to true
or false
.
if ([]) {
console.log("[] is truthy");
}
if ([] == false) {
console.log("[] == false");
}
// [] is truthy
// [] == false
[]
is truthy, but it's also loosely equal to false
. It's truthy, because all objects are truthy. However, when comparing with false
, which is a primitive, []
is also converted to a primitive, which is ""
via Array.prototype.toString()
. Comparing strings and booleans results in both being converted to numbers, and they both become 0
, so [] == false
is true
. In general, falsiness and == false
differ in the following cases:
NaN
,undefined
, andnull
are falsy but not loosely equal tofalse
."0"
(and other string literals that are not""
but get coerced to 0) is truthy but loosely equal tofalse
.- Objects are always truthy, but their primitive representation may be loosely equal to
false
.
Truthy values are even more unlikely to be loosely equal to true
. All values are either truthy or falsy, but most values are loosely equal to neither true
nor false
.
Constructor
Boolean()
-
Creates
Boolean
objects. When called as a function, it returns primitive values of type Boolean.
Instance properties
These properties are defined on Boolean.prototype
and shared by all Boolean
instances.
Boolean.prototype.constructor
-
The constructor function that created the instance object. For
Boolean
instances, the initial value is theBoolean
constructor.
Instance methods
Boolean.prototype.toString()
-
Returns a string of either
true
orfalse
depending upon the value of the object. Overrides theObject.prototype.toString()
method. Boolean.prototype.valueOf()
-
Returns the primitive value of the
Boolean
object. Overrides theObject.prototype.valueOf()
method.
Examples
Creating Boolean objects with an initial value of false
const bNoParam = new Boolean();
const bZero = new Boolean(0);
const bNull = new Boolean(null);
const bEmptyString = new Boolean("");
const bfalse = new Boolean(false);
Creating Boolean objects with an initial value of true
const btrue = new Boolean(true);
const btrueString = new Boolean("true");
const bfalseString = new Boolean("false");
const bSuLin = new Boolean("Su Lin");
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});
Specifications
Specification |
---|
ECMAScript Language Specification # sec-boolean-objects |
Browser compatibility
BCD tables only load in the browser
See also
- Boolean
- Boolean primitives
- Boolean data type on Wikipedia