A name is a letter optionally followed by one or more letters, digits, or underbars. A name cannot be one of these reserved words:
abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with
Most of the reserved words in this list are not used in the language. The list
does not include some words that should have been reserved but were not, such as
Infinity. It is not
permitted to name a variable or parameter with a reserved word. Worse, it is not
permitted to use a reserved word as the name of an object property in an object
literal or following a dot in a refinement.
Names are used for statements, variables, parameters, property names, operators, and labels.