A Boolean value is a member of the Boolean type and may have one of two unique values, either true or false.
If you create a Boolean object and set it to the value true, you cannot convert it to a number with the toNumber() method, because this generates a runtime error. However, you can coerce the Boolean value into a numeric value by preceding it with a unary plus sign. So +true is a numeric primitive and yields the value 1, while false is converted to zero.
ECMA 262 edition 2 - section - 4.3.13
ECMA 262 edition 3 - section - 4.3.13