Table of Contents

15.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 if keyword 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 15-1 are case sensitive, but identifiers, frame labels, and symbol export IDs are not. In the following example, the onClipEvent keyword is incorrectly capitalized as onclipevent and causes an error:

// ERROR! Should be onClipEvent (enterFrame) {
onclipevent (enterFrame) {
  this._x++;
}

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 causes an error in JavaScript but successfully creates 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 disables the built-in Date class. We must therefore ensure that our identifiers are distinguished by more than just case, both from one another and from any predefined identifiers, such as Date or Array. Here's how we rewrite the previous code in ActionScript:

theDate = new Date( );  // Use this approach in ActionScript

Frame labels and symbol export IDs are also not case-sensitive. For example, the following gotoAndPlay( ) function will work even if the destination label is INTRO instead of Intro:

gotoAndPlay("Intro");

Similarly, a symbol exported as "SHIP" can be attached as follows:

this.attachMovie("ship", "enemyShip", 1);

However, these case mismatches are not recommended practice. The key in all situations is to be consistent—even when consistency is not strictly required by the language. Consistently capitalizing variables, functions, instances, and other items makes our code easier to read and prevents future changes in ActionScript's case rules from breaking our hard work.


Table of Contents