数字枚举
可以不设置初始值,如果不设置,第一项的值为0,后面自增。
enum Direction{
up=1,
down,
left,
right
}
编译为js是什么样的呢?
"use strict";
var Direction;
(function (Direction) {
Direction[Direction["up"] = 1] = "up";
Direction[Direction["down"] = 2] = "down";
Direction[Direction["left"] = 3] = "left";
Direction[Direction["right"] = 4] = "right";
})(Direction || (Direction = {}));
这段代码通过一个自执行函数,为对象Direction设置了8个属性
为什么有8个属性呢?这里着重解释下这句代码
Direction[Direction["up"] = 1] = "up";
这句代码会先执行 Direction["up"] = 1 ,Direction有了up属性,同时这个表达式返回值为1,那接下来就会执行 Direction[1] = "up",也就是这一句代码给Direction设置了2个属性。
那在我们使用时可以用Direction.up它的值为1,也可以用Direction[1]它的值为"up"。
字符串枚举
字符串枚举必须给每一项设置初始值,它没有值自增这一特新
enum Direction{
up = "up",
down = "down",
left = "left",
right = "right"
}