Errata
These are the known mistakes in the second edition of the book. For errata in the first edition, see this page. To report a problem that is not listed here, send me an email.
Issues whose section title is followed by a superscript number are only present up to the print denoted by that number. I.e. those followed by ² were fixed in the third print.
Introduction
Page 4 (Why Language Matters¹): The sentence “You can probably imagine how how tedious…” duplicates the word how.
Chapter 2
Page 32 (while and do Loops²): The var
name
example unintentionally exits the loop when the dialog is
canceled, because browsers have a built-in global
variable name
whose values are implicitly converted to
strings.
Chapter 8
Page 140 (Programmer Mistakes): In the third paragraph, the text reads “though several functions”, which should be “through several functions”.
Chapter 9
Page 157 (Repeating Parts of a Pattern³): The
paragraph at the top of the page claims that {,5}
is equivalent to
{0,5}
in a regular expression. This is not the case (you
have to include the zero).
Page 159 (The Date Type¹):
The findDate
function produces the wrong months. The
second argument given to new Date
should
be Number(match[2]) - 1
, subtracting one to compensate
for the fact that months start at zero in this interface.
Page 162 (Backtracking²): The regular expression
should have another +
sign after the [\da-f]
group to match what it is described as matching. The diagram for the
expression is similarly missing an arrow looping back around the
corresponding box.
Chapter 10
Page 185 (Slow-Loading Modules¹): In the code
snippet for define
, the second use of
the every
method is incorrect. The call should be
to myMod.onLoad.forEach
instead.
Chapter 11
Page 192 (Parsing¹): The example Egg program has its parentheses distributed incorrectly. One closing parentheses from the second line should be moved to the end of the last line.
Chapter 12
Page 209 (The Web²): In the third paragraph I claim that the U in “URL” stands for Universal, whereas it actually stands for Uniform.
Chapter 14
Page 242 (Mouse Motion¹): The example
uses event.which
to detect mouse button release. This
only works in Chrome and Safari. See
the updated code
and comment for a better
way.
Chapter 16
Page 281 (Curves¹): The text refers to
the bezierCurve
method. This method is actually
called bezierCurveTo
(as in the example code).
Page 282 (Curves¹): Where it says the picture shows a line from the left of the circle to the left of the quarter circle, it should definitely say right in both instances.
Chapter 17
Page 312 (Summary¹): The code example uses
the statusCode
property. This does not exist, since the
property is actually called status
.
Chapter 18
Page 316 (Fields²): The checked
attribute in the file
field at the bottom of the example
doesn't mean anything, and should not be there.
Page 327 (Summary¹): “When the user has selected a field” should be “When the user has selected a file”.
Chapter 21
Page 377 (Long-Polling Support³): In the second
paragraph the changesSince
parameter is incorrectly
referred to as changeSince
(singular).
Exercise Hints
Page 409 (Reversing an Array): The
example for
loop near the bottom of the page
says \textgreater{}
where it should
say >
.