枚举类型
描述:
枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。
🤔读完之后大概知道是做什么的,但是有不清楚到底做什么的。
😉我们可以理解enum枚举类型声明之后会返回一个对象,这个对象中我们可以保存经常用的常量,在用的时候我们直接取值即可。
首先我们先定义一个enum类型的数据:
enum colors {
red,
green,
black
}
这样我们就定义好了一个枚举类型的colors对象,或者说是数组也不为过。(存在映射关系)
先看这段话,我们再看下面的例子:
枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射:
百花讲就是,我们上面定义的red可以通过colors[0]拿到red,可以通过colors.red获得0
经典例子:
enum Days {
Sun, Mon, Tue, Wed, Thu, Fri, Sat};
console.log(Days["Sun"] === 0); // true
console.log(Days["Mon"] === 1); // true
console.log(Days["Tue"] === 2); // true
console.log(Days["Sat"] === 6); // true
console.log(Days[0] === "Sun"); // true
console.log(Days[1] === "Mon"); // true
console.log(Days[2] === "Tue"); // true
console.log(Days[6] === "Sat"); // true
上面的基础用法,就是声明enum之后产生了一种映射关系,第一项and 0,第二项 and 1…,类似与数组下标,只能说类似,因为我们可以改动下标
。
升级例子
1.
enum Days {
Sun = 7, Mon = 1, Tue, Wed, Thu, Fri, Sat};
console.log(Days["Sun"] === 7); // true
console.log(Days["Mon"] === 1); // true
console.log(Days["Tue"] === 2); // true
console.log(Days["Sat"] === 6); // true
我们给了第一项默认值为7,第二项为1。
我们打印后发现第三项为2,是跟着最后复制的项向上累加的。
2.
enum Days {
Sun = 7, Mon = 1.5, Tue, Wed, Thu, Fri, Sat};
console.log(Days["Sun"] === 7); // true
console.log(Days["Mon"] === 1.5); // true
console.log(Days["Tue"] === 2.5); // true
console.log(Days["Sat"] === 6.5); // true
赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长仍为 1
六卿
见贤思齐焉,见不贤内自省