start page | rating of books | rating of authors | reviews | copyrights

Book HomeActionScript: The Definitive GuideSearch this book

4.8. Undefined

Most of the datatypes we've explored so far have been used for storing and manipulating information. The undefined datatype has a more narrow purpose: it is used to check whether a variable exists or whether a variable has yet been assigned a value. The undefined datatype has only one legal value, the primitive value undefined.

When we first define a variable, it is assigned the value undefined by default:

var velocity;

To the interpreter, the preceding statement reads:

var velocity = undefined;

To check whether a variable has a value, we can compare the variable to undefined, as in:

if (myVariable != undefined) {
  // myVariable has a value, so proceed as desired...
}

Note that an undefined value is converted to the empty string when used as a string. For example, if firstName is undefined, the following trace( ) statement will display "" (the empty string):

var firstName;
trace(firstName);  // Displays nothing (the empty string)

This same code in JavaScript would display the string "undefined" instead of the empty string. ActionScript converts undefined to "" for the sake of backward compatibility.

Because there was no undefined type in Flash 4 ActionScript, many Flash 4 programs used the empty string to check whether a variable had a useful value. Code like this was common:

if (myVar eq "") { 
  // Don't do anything yet: myVar is undefined 
}

If Flash 5 converted undefined to anything other than "" in a string context, old code like that would break in the Flash 5 player.

Note that ActionScript returns undefined both for variables that do not exist and variables that have been declared but have no value. This is also a departure from JavaScript, where references to variables that do not exist cause an error.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.