O'Reilly logo

JavaScript: The Good Parts by Douglas Crockford

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Falsy Values

JavaScript has a surprisingly large set of falsy values, shown in See Table A-1.

Table A-1. The many falsy values of JavaScript

Value

Type

0

Number

NaN (not a number)

Number

'' (empty string)

String

false

Boolean

null

Object

undefined

Undefined

These values are all falsy, but they are not interchangeable. For example, this is the wrong way to determine if an object is missing a member:

value = myObject[name];
if (value == null) {
   alert(name + ' not found.');
}

undefined is the value of missing members, but the snippet is testing for null. It is using the == operator (see Appendix B), which does type coercion, instead of the more reliable === operator. Sometimes those two errors cancel each other out. Sometimes they don't.

undefined and NaN are not constants. They are global variables, and you can change their values. That should not be possible, and yet it is. Don't do it.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required