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

Book HomeActionScript: The Definitive GuideSearch this book

14.6. Case Sensitivity

When a language is fully case sensitive, every token in the language -- including all identifiers and keywords -- must be entered with the correct capitalization. For example, in case-sensitive languages, the statement:

If (x == 5) {
  x = 10;
}

would cause an error because the keyword if is improperly capitalized as If. Furthermore, in case-sensitive languages, the following two statements would declare two separate variables (one named firstName and a second one named firstname):

var firstName = "doug";
var firstname = "terry";

The ECMA-262 specification, upon which ActionScript is based, demands complete case sensitivity. ActionScript, however, diverges from the standard in the area of case sensitivity in order to maintain backward compatibility with Flash 4 movies. In ActionScript, the keywords in Table 14-1 are case sensitive, but identifiers are not. For example, in the following, the onClipEvent keyword is incorrectly capitalized as onclipevent and would cause an error:

onclipevent (enterFrame)  // Should be onClipEvent (enterFrame)

But unlike keywords, identifiers are not case sensitive in ActionScript, so the following statements assign a value to the same variable:

var firstName = "margaret";
var firstname = "michael";
trace(firstName);   // Yields "michael"
trace(firstname);   // Also yields "michael" (the variables are the same)

Even internal identifiers, such as property names and function names, are not case sensitive in ActionScript. The following line would cause an error in JavaScript but would successfully create an array in ActionScript:

myList = new array();   // Should preferably be new Array( );

This can present problems when porting JavaScript code to ActionScript or for JavaScript programmers learning ActionScript. Case sensitivity is often used in JavaScript to apply the same name to different purposes. For example, the statement:

date = new Date( );   // Works in JavaScript but not ActionScript

will have destructive effects in ActionScript where the identifier date is not distinguished from the object class Date. In ActionScript, the preceding code would disable the built-in Date class. We must, therefore, ensure that our identifiers are distinguished by more than just case from one another and from any predefined identifiers like Date or Array. Here's how we'd rewrite the previous code in ActionScript:

myDate = new Date( ); // Use this in ActionScript

The key in all situations is to be consistent -- even when consistency is not strictly required by the language. Capitalizing variables, functions, instances, and other items consistently makes our code easier to read and prevents future changes in ActionScript's case rules from breaking our hard work.



Library Navigation Links

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