Вопрос

Converting any value to Boolean returns false or true. For example:

> Boolean (false)
false
> Boolean (null)
false
> Boolean (undefined)
false
> Boolean ("")
false

But 0 is special, because it's a number. I consider is as a valid false value:

> Boolean (0)
false

Are there any other valid false values?

Это было полезно?

Решение

As per ECMA 5.1 Standards, Truthiness of an expression will be decided, as per the following table

+---------------+-------------------------------------------------------+
| Argument Type | Result                                                |
+---------------+-------------------------------------------------------+
| Undefined     | false                                                 |
+---------------+-------------------------------------------------------+
| Null          | false                                                 |
+---------------+-------------------------------------------------------+
| Boolean       | The result equals the input argument (no conversion). |
+---------------+-------------------------------------------------------+
| Number        | The result is false if the argument is +0, −0, or NaN;|
|               | otherwise the result is true.                         |
+---------------+-------------------------------------------------------+
| String        | The result is false if the argument is the empty      |
|               | String (its length is zero); otherwise the result is  |
|               | true.                                                 |
+---------------+-------------------------------------------------------+
| Object        | true                                                  |
+---------------+-------------------------------------------------------+

So, you have missed -0 and NaN.

console.log(Boolean(-0));
# false
console.log(Boolean(NaN));
# false
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top