【问题标题】:JavaScript: Enum Flag checkJavaScript:枚举标志检查
【发布时间】:2013-03-21 15:27:14
【问题描述】:

我想检查我的枚举值中是否设置了标志。 我的代码有什么问题?

Javascript 代码

var flags = {
  FOO: 1,
  BAR: 2,
  BAZ: 4,
  FUM: 8,
  ERROR: 65
}

var value = flags.FOO | flags.BAR;

if (value & flags.ERROR){
   alert("ERROR IS SET, but this is not true");
}

【问题讨论】:

  • 65? 65 是 1+64。如果你想要位掩码值,那么ERROR 必须是64
  • 现在究竟有什么可以按预期工作? value & flats.ERROR 共享 FOO 位 (2^0),表示条件为真。

标签: javascript enums


【解决方案1】:

首先你的值应该是 n^2:

var flags = {
  UNKNOWN: 0, 
  FOO: 1,
  BAR: 2,
  BAZ: 4,
  FUM: 8,
  ERROR: 16
}

那么你的陈述应该是:

if ((value & flags.ERROR) == flags.ERROR){
   alert("ERROR IS SET");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多