Control Flow

True and False Values

Even non-boolean data types, like strings and numbers, can still be used like booleans to determine control flow.

In JavaScript, all values have a truthy or falsy value. This means that they evaluate to true or false when they are used as a part of a control flow condition.

All variables that have been declared and assigned are truthy unless they contain one of the six values listed below:

  • false
  • 0 and -0
  • "" and '' (empty strings)
  • null
  • undefined
  • NaN (Not a Number)

For example:

let variableOne = 'I Exist!'; if (variableOne) { // This code will run because variableOne contains a truthy value. } else { // This code will not run because the first block ran. }

The second line of this program checks a condition if (variableOne). By only writing the name of the variable as the condition, we are checking the truthiness of the variableOne. In this case, variableOne behaves like the value true because a string that is not empty is truthy.

Here is an example with numbers.

let numberOfApples = 0; if(numberOfApples){ console.log('Let us eat!'); // This code will not run because 0 is a falsy value } else { console.log('No food left!'); // This code will run }

Since 0 is one of the six falsy values, the code within the else block runs.

There is an important distinction between a variable's value and its truthiness:

  • numberOfApples's value is 0 because that is the data saved to the variable.
  • numberOfApples is falsy when used in control flow because it exists and does contain one of the six falsy values listed above.
Community Forums
Get help and ask questions in the Codecademy Forums
Report a Bug
If you see a bug or any other issue with this page, please report it here.