当前位置: 首页 > 面试题库 >

在JavaScript中定义枚举的首选语法是什么?

卜鹏
2023-03-14
问题内容

在JavaScript中定义枚举的首选语法是什么?就像是:

my.namespace.ColorEnum = {
    RED : 0,
    GREEN : 1,
    BLUE : 2
}

// later on

if(currentColor == my.namespace.ColorEnum.RED) {
   // whatever
}

还是有更好的成语?


问题答案:

从1.8.5开始,可以密封和冻结对象,因此将以上定义为:

const DaysEnum = Object.freeze({"monday":1, "tuesday":2, "wednesday":3, ...})

要么

const DaysEnum = {"monday":1, "tuesday":2, "wednesday":3, ...}
Object.freeze(DaysEnum)

和瞧!JS枚举。

但是,这不会阻止您为变量分配不需要的值,这通常是枚举的主要目标:

let day = DaysEnum.tuesday
day = 298832342 // goes through without any errors

确保类型安全性(使用枚举或其他方式)的程度更高的一种方法是使用诸如TypeScript或Flow之类的工具。

不需要引号,但为了保持一致性,我保留了它们。



 类似资料:
  • 在typescript中枚举的用途是什么。如果它的目的仅仅是使代码可编辑,我们就不能使用常量来达到同样的目的吗 如果没有打字检查的好处,就不能写成。

  • 我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。

  • 问题内容: 我以为我很了解Java泛型,但是随后在java.lang.Enum中遇到了以下内容: 有人可以解释如何解释此类型参数吗?奖励点,用于提供可以使用类似类型参数的其他示例。 问题答案: 这意味着枚举的类型参数必须从本身具有相同类型参数的枚举派生。怎么会这样 通过使类型参数成为新类型本身。因此,如果我有一个名为StatusCode的枚举,则它等效于: 现在,如果你检查的限制,我们已经得到了-

  • 具有以下定义 是否有一种方法可以正确执行比较以使用标准等式:

  • log4j2留档显示了生成自定义组件(如附加程序、过滤器和查找)的首选方法。但是,还不清楚如何确保这些自定义组件被日志框架拾取并可由日志配置使用。 在类路径中放置了一个带有正确注释的自定义appender之后,我还需要做些什么才能开始将其包含在我的log4j2中。xml文件,并已被日志框架拾取? 为了提供一个例子,如果我用以下注释custon appender: 我该如何在log4j2中这样拾取和

  • 问题内容: Python 3.4引入了一个新模块,该模块向该语言添加了枚举类型。的文档提供了一个示例来演示如何扩展它: 此示例还演示了一个问题:在property方法中,定义了一个常量,该常量通常在类级别定义- 但是尝试在a级别内执行此操作只会将其添加为枚举的成员之一,因此,在方法内部定义。 如果该类想在其他方法中使用此常量,则也必须在其中定义它,这显然不是理想的选择。 有什么方法可以在中定义类常