一. 枚举
枚举在JavaScript中是运行时存在的对象,成员和成员值存在互相映射的关系
enum Direction {
Up = 1,
Down,
Left,
Right
}
以下几种情况中,枚举成员会被当做常数:
(1) 本身没有初始化函数,且前一个成员是常数,第一个默认是0
(2) 常数枚举表达式(1. 数字字面量, 2. 引用之前定义的常数枚举成员, 3. 带括号的常数枚举表达式, 4. 常数枚举表达式应用了一元运算符,二元运算符), 会在编译阶段被计算出值
二. const枚举
常量枚举会在编译阶段被删除,就是枚举的定义会被删除
const enum Directions {
Up,
Down,
Left,
Right
}
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]
编译的结果是:
var directions = [1 /* Up */, 2 /* Down */, 3 /* Left */, 4 /* Right */];
三. 外部枚举
外部枚举不大理解,目前的理解是上下文环境中已经存在了外部枚举声明的枚举,为了预防重复声明的作用
如下:
declare enum Enum {
A = 1,
B,
C = 2
}
当我尝试再次声明一个不用declare的Enum枚举时,发现报错了
enum Enum {
A = 1,
B,
C = 2
}
网友评论