9.5 Code Generation

An enum declaration generates JavaScript equivalent to the following:

  1. var <EnumName>;
  2. (function (<EnumName>) {
  3. <EnumMemberAssignments>
  4. })(<EnumName>||(<EnumName>={}));

EnumName is the name of the enum.

EnumMemberAssignments is a sequence of assignments, one for each enum member, in order they are declared, of the form

  1. <EnumName>[<EnumName>["<MemberName>"] = <Value>] = "<MemberName>";

where MemberName is the name of the enum member and Value is the assigned constant value or the code generated for the computed value expression.

For example, the ‘Color’ enum example from section 9.1 generates the following JavaScript:

  1. var Color;
  2. (function (Color) {
  3. Color[Color["Red"] = 0] = "Red";
  4. Color[Color["Green"] = 1] = "Green";
  5. Color[Color["Blue"] = 2] = "Blue";
  6. })(Color||(Color={}));