枚举是组织收集有关联变量的一种方式

    1. // 定义一个枚举
    2. enum Tristate {
    3. False,
    4. True,
    5. Unknow
    6. }
    7. // 编译成js以后
    8. var Tristate;
    9. (function(Tristate) {
    10. Tristate[(Tristate['False'] = 0)] = 'False'
    11. Tristate[(Tristate['True'] = 1)] = 'True'
    12. Tristate[(Tristate['Unknow'] = 2)] = 'Unknow'
    13. })(Tristate || (Tristate = {}))
    14. // 先让我们聚焦Tristate[(Tristate['False'] = 0)] = 'False' 这行代码,其中Tristate[(Tristate['False'] = 0)] = 'False'的意思是将 Tristate 对象里的 False 成员值设置为 0 。注意 JavaScript赋值运算返回的值是被赋予的值(在此例子中是0),因此下一次 JavaScript 运行时执行的代码是 Tristate[0] = 'False'。意味着你可以使用 Tristate 变量来吧字符串枚举类型改造成一个数字或是数字类型的枚举类型 如下:
    15. enum Tristate {
    16. False,
    17. True,
    18. Unknow
    19. }
    20. console.log(Tristate [0]); // => ''False'
    21. console.log(Tristate ['False']); // => 0
    22. console.log(Tristate [Tristate.False]); // => 'False' because `Tristate.False == 0`
    23. // 默认情况下,第一个枚举值是 0 ,然后每个后续值 依次递增 1
    24. enum Tristate {
    25. False, // => 0
    26. True, // => 1
    27. Unknow // => 2
    28. }
    29. // 但是,你可以通过特定的赋值来改变给任何枚举成员关联的数字,如下例子,我们可以从3开始依次递增
    30. enum Tristate {
    31. False = 3, // => 3
    32. True, // => 4
    33. Unknow // => 5
    34. }