35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
|
---
|
|||
|
title: Truthy Value
|
|||
|
---
|
|||
|
A **truthy** value is a value that translates to **true** when evaluated in a _Boolean_ context.
|
|||
|
|
|||
|
All values are **truthy** unless they are defined as **falsy** (i.e. except for `false`, `0`, `""`, `null`, `undefined` and `NaN`).
|
|||
|
|
|||
|
Some interesting **truthy** values are:
|
|||
|
|
|||
|
'0' (a string containing a single zero)
|
|||
|
'false' (a string containing the text “false”)
|
|||
|
[] (an empty array)
|
|||
|
{} (an empty object)
|
|||
|
function(){} (an “empty” function)
|
|||
|
|
|||
|
**Rules:**
|
|||
|
* `false`, `zero` and `''`(empty strings) are all equivalent.
|
|||
|
* `null` and `undefined` are equivalent to themselves and each other but nothing else.
|
|||
|
* `NaN` is not equivalent to anything – including another `NaN!
|
|||
|
* `Infinity` is truthy – but cannot be compared to `true` or `false`!
|
|||
|
* An empty array(`[]`) is truthy – yet comparing with `true` is `false` and comparing with `false` is `true`?!
|
|||
|
|
|||
|
|
|||
|
A single value can therefore be used within conditions, e.g.
|
|||
|
|
|||
|
if (value) {
|
|||
|
// value is truthy
|
|||
|
}
|
|||
|
else {
|
|||
|
// value is falsy
|
|||
|
// it could be false, 0, '', null, undefined or NaN
|
|||
|
}
|
|||
|
|
|||
|
See also: <a>falsy</a> | <a href='https://developer.mozilla.org/en-US/docs/Glossary/Truthy' target='_blank' rel='nofollow'>MDN</a>
|