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).
<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
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.
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.
<script> myname = "Peter" myage = 24 document.write("a: " + 42 + "<br />") // Numeric literal document.write("b: " + "Hi" + "<br />") // String literal document.write("c: " + true + "<br />") // Constant literal document.write("d: " + myname + "<br />") // Variable string literal document.write("e: " + myage + "<br />") // Variable numeric literal </script>
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
.