fix: adding formatting and more info on truthy (#21158)
Adding markdown formatting for sections and more information on truthy. Also attempting to mirror how the falsy article is organized. Moving the conditional example from the bottom to the top of the file.pull/34301/head
parent
86a0bad31f
commit
9078a50a70
|
@ -1,34 +1,42 @@
|
||||||
---
|
---
|
||||||
title: Truthy Value
|
title: Truthy Value
|
||||||
---
|
---
|
||||||
|
## Description
|
||||||
A **truthy** value is a value that translates to **true** when evaluated in a _Boolean_ context.
|
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`).
|
All values are **truthy** unless they are defined as **[falsy](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/guide/english/javascript/falsy-values/index.md)** (i.e. except for `false`, `0`, `""`, `null`, `undefined` and `NaN`).
|
||||||
|
|
||||||
Some interesting **truthy** values are:
|
## Checking for Truthy Values on Variables
|
||||||
|
|
||||||
'0' (a string containing a single zero)
|
It is possible to check for a truthy value in a variable with a simple conditional:
|
||||||
'false' (a string containing the text “false”)
|
|
||||||
[] (an empty array)
|
|
||||||
{} (an empty object)
|
|
||||||
function(){} (an “empty” function)
|
|
||||||
|
|
||||||
**Rules:**
|
```javascript
|
||||||
|
if (variable) {
|
||||||
|
// When the variable has a truthy value the condition is true.
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also get the boolean value of a variable by using the bang operator (`!`) twice:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
!!variable // When the variable is truthy, a double bang (!!) will evaluate to the Boolean true.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Interesting JavaScript Rules concerning Truthy Values
|
||||||
|
|
||||||
|
#### These Are Interesting Truthy Values
|
||||||
|
* '0' (a string containing a single zero)
|
||||||
|
* 'false' (a string containing the text “false”)
|
||||||
|
* [] (an empty array)
|
||||||
|
* {} (an empty object)
|
||||||
|
* function(){} (an “empty” function)
|
||||||
|
|
||||||
|
#### Comparing Interesting Truthy Values
|
||||||
* `false`, `zero` and `''`(empty strings) are all equivalent.
|
* `false`, `zero` and `''`(empty strings) are all equivalent.
|
||||||
* `null` and `undefined` are equivalent to themselves and each other but nothing else.
|
* `null` and `undefined` are equivalent to themselves and each other but nothing else.
|
||||||
* `NaN` is not equivalent to anything – including another `NaN!
|
* `NaN` is not equivalent to anything – including another `NaN!
|
||||||
* `Infinity` is truthy – but cannot be compared to `true` or `false`!
|
* `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`?!
|
* An empty array(`[]`) is truthy – yet comparing with `true` is `false` and comparing with `false` is `true`?!
|
||||||
|
|
||||||
|
## More Information
|
||||||
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>
|
See also: <a>falsy</a> | <a href='https://developer.mozilla.org/en-US/docs/Glossary/Truthy' target='_blank' rel='nofollow'>MDN</a>
|
||||||
|
|
Loading…
Reference in New Issue