Expressions

JavaScript expressions are very similar to those in PHP. As you learned in Chapter 4, an expression is a combination of values, variables, operators, and functions that results in a value; the result can be a number, a string, or a Boolean value (which evaluates to either true or false).

Example 14-1 shows some simple expressions. For each line, it prints out a letter between a and d, followed by a colon and the result of the expressions (the <br /> tag is there to create a line break and separate the output into four lines).

Example 14-1. Four simple Boolean expressions
<script>
document.write("a: " + (42 > 3) + "<br />")
document.write("b: " + (91 < 4) + "<br />")
document.write("c: " + (8 == 2) + "<br />")
document.write("d: " + (4 < 17) + "<br />")
</script>

The output from this code is as follows:

a: true
b: false
c: false
d: true

Notice that expressions a: and d: evaluate to true, but b: and c: evaluate to false. Unlike PHP (which would print the number 1 and nothing, respectively), JavaScript displays the actual strings “true” and “false”.

In JavaScript, when checking whether a value is true or false, all values evaluate to true with the exception of the following, which evaluate to false: the string false itself, 0, −0, the empty string, null, undefined, and NaN (Not a Number, a computer engineering concept for an illegal floating-point operation such as division by zero).

Note that I am referring to true and false in lowercase. This is because, unlike in PHP, these values must be in lowercase in JavaScript. Therefore, only the first of the two following statements will display, printing the lowercase word “true”—the second will cause a “‘TRUE’ is not defined” error:

if (1 == true) document.write('true') // True
if (1 == TRUE) document.write('TRUE') // Will cause an error

Note

Remember that any code snippets you wish to type in and try for yourself in an HTML file need to be enclosed within <script> and </script> tags.

Literals and Variables

The simplest form of an expression is a literal, which means something that evaluates to itself, such as the number 22 or the string “Press Enter”. An expression could also be a variable, which evaluates to the value that has been assigned to it. These are both types of expressions, because they return a value.

Example 14-2 shows five different literals, all of which return values, albeit of different types.

And, as you’d expect, you see a return value from all of these in the following output:

a: 42
b: Hi
c: true
d: Peter
e: 24

Operators let you create more complex expressions that evaluate to useful results. When you combine assignment or control-flow constructs with expressions, the result is a statement.

Example 14-3 shows one of each of these kinds of statement. The first assigns the result of the expression 366 - day_number to the variable days_to_new_year, and the second outputs a friendly message only if the expression days_to_new_year < 30 evaluates to true.