SPS Home    >   Dgreath    >   JavaScript    >   Identifiers


The following information describes typical JavaScript nomenclature as a guide to consistent identifier usage. All JavaScript identifiers must conform to the following rules:
  • Be a sequence of alphanumerical characters (A-Z, a-z, 0-9)
  • May include the underscore "_" and dollar sign "$"
  • Must not begin with a number
  • Must not have any spaces within
  • Are case sensitive
  • Must not be a reserved word
  • Hungarian notation (either systems or application)  is non-preferred

For example, object.$1 is valid, while object.1 is not. Unless it is intended to substitute user programming for system provided properties and methods, avoid the use of global names.


JavaScript class names always begin with an uppercase letter and are expressed as a single descriptive noun. (ex. the Object, Date, Math, Number, String, Boolean, Array, Function classes). Classes are not executable, but rather are prototypes used as the the foundation of objects.


JavaScript object (an instance of a Class) names always begin with an lowercase letter and are expressed as a descriptive noun or noun phrase. (ex. the screen, window, document, navigator, location objects). A JavaScript object is essentially a collection of related properties and methods and is an instance of a class. Many commonly used JavaScript objects are instances of classes provided by the JavaScript runtime engine (the Document Object Model  or  DOM) contained in the web browser.

Since a JavaScript object is actually an array of properties, the formal notation is:
objectName["propertyName"] for properties, and
objectName["methodName"](arguments) for methods.
The simplified dot notation commonly used is:
objectName.propertyName for properties, and
objectName.methodName(arguments) for methods.

Note, however, the five built- in JavaScript functions (Boolean, Date, Number, Object, String) deviate from the general rule and have the initial letter capitalized to signify they are top level functions. These functions are used to convert arguments into datatypes and, while derived from the similarly named classes, are different entities.


Function property names always begin with an lowercase letter and are expressed as a noun. (ex. screen.availHeight, screen.availWidth ). The use of camel casing (capitalizing the first letter of each word except for the first) is quite normal. Properties never stand alone and are either linked to their object name or to the special this synonym.


Function methods always begin with an lowercase letter and are expressed as a verb or verb phrase (ex. window.open(), window.close() methods of the window object) followed by a list of values enclosed in parenthesis. When calling the function, these values are its arguments, while in the context of the function, they are its external parameters.  The use of camel casing is acceptable. A function's methods are a property of that function and thus adhere to the practice guiding the naming of properties. Methods never stand alone and are either linked to their object name or to the special this synonym.


JavaScript variable names are always expressed in lower case and should be descriptive of the value contained within.  The datatype of the variable is determined by the type of data with which it is initialized. Avoid the use of systems or application Hungarian notation. While that method has been popular in the strongly typed programming languages such as C++ and Java, it can be problematic in the loosely typed arena of JavaScript. Variables can be either of the primitive datatypes (Boolean, Number, String) or complex (Object, Array, Date, Function, Error, RegExp). The properties of a primitive variable are its name, type, and value.


JavaScript statements are always expressed in lower case. Therefore, the statement if (a == b){a = 4}else {a =5 } is valid while the statement IF (a == b){a = 4}ELSE {a = 5} is invalid.


The following words are reserved and may not be used for identifiers:
abstract (2) final (D) protected (2)
as (1) finally (S) public (1)
boolean (D) float (D) return (S)
break (S) for (S) short (D)
byte (D) function (S) static (1)
case (S) goto (2) super (1)
catch (S) if (S) switch (S)
char (D) implements (2) synchronized (2)
class (1) import (1) this (C)
continue (S) in (O) throw (S)
const (1) instanceof (O) throws (2)
debugger (2) int (D) transient (2)
default (S) interface (1) true (V)
delete (S) is (1) try (S)
do (S) long (D) typeof (O)
double (D) namespace (1) use (1)
else (S) native (2) var (S)
enum (2) new (S) void (O)
export (1) null (V) volatile (2)
extends (1) package (1) while (S)
false (V) private (1) with (S)
Unless noted, these keywords are reserved in all implementations of JavaScript
(1) Implemented in JavaScript 2.0
(2) Reserved for future implementation beyond JavaScript 2.0
(S) JavaScript statement
(O) JavaScript operator
(D) JavaScript datatype (kept on the list for backwards compatibility as JS is no longer typed)
(V) JavaScript defined value
(C) Special identifier used in class creation


The following object names should be used with caution. JavaScript allow the user to overwrite the built in objects and their properties and methods in cases where the normal construct doesn't work as needed.  Therefore, if these names are used, the normal built in objects will no longer function.
Object Name Description
anchors Synonym for document.anchors[] array
forms Synonym for document.forms[] array
frames Synonym for window.frames[] array
images Synonym for document.images[] array
links Synonym for document.links[] array
applets Synonym for document.applets[] array
objects Synonym for document.objects[] array
mimeTypes Synonym for navigator.mimeTypes[] array
plugins Synonym for navigator.plugins[] array
Array() The Array class
Boolean() The Boolean class and global top level function
Date() The Date class and global top level function
Error() The Error class
Function() The Function class
Math() The Math class
Number() The Number class and global top level function
Object() The Object class and global top level function
RegExp() The RegExp class
String() The String class and global top level function
Infinity The global infinity property
NaN The global Not a Number property
undefined The global undefined property
document The DOM document object
screen The DOM screen object
window The DOM window object
navigator The DOM navigator object
history The DOM history object
location The DOM location object


The two Boolean values of 'true' and 'false' are synonyms for '1' and '0' respectively and may be interchanged freely. Note that 'TRUE' and 'FALSE' are undefined and will always throw an error.


A numerical literal is not a Number object and has neither the properties nor methods of Number datatypes although converting a numeric literal into an object is quite simple with the Number() function. A numeric literal consists of the characters 0-9, and the decimal point " . " plus sign " + " and minus sign " - ".


A string literal is not a String object and has neither the properties nor methods of String datatypes although converting a string literal into an object is quite simple with the String() function. A string literal principally consists of the alphanumeric characters a-z, A-Z, 0-9, and the space " ". In addition, the following escaped characters can be embedded:
  • [ \' ] Single Quote
  • [ \" ] Double Quote
  • [ \& ] Ampersand
  • [ \\ ] Backslash
  • [ \n ] New line
  • [ \r ] Carriage Return
  • [ \t ] Horizontal Tab
  • [ \b ] Backspace
  • [ \f ] Formfeed
The following punctuation marks ( ~ ! @ # $ % ^ * - + , . ? / | = ; : _ ` ( ) [ ] { } < > ) are acceptable as well.