1

这更多是出于好奇,但是否可以在 javascript 中连接比较?

例子:

var foo = 'a',
    bar = 'b';
if (foo === ('a' || bar)) {
    console.log('yey');
}

反对...

var foo = 'a',
    bar = 'b';
if (foo === 'a' || foo === bar)) {
    console.log('yey');
}

PS:当您在多个条件下比较同一变量时,这可能非常有用。

4

4 回答 4

2

您可以使用Array.indexOf

if (["a", "b"].indexOf(foo) > -1) {
    console.log("yey");
}

尽管某些旧浏览器不支持此方法,但请查看MDN中的兼容性问题——提供了一个简单的shim

@Pointy在评论中建议的另一种方法是检查对象中是否存在属性:

if (foo in {a: 1, b: 1}) {  // or {a: 1, b: 1}[foo]
    console.log("yey");
}
于 2013-01-24T23:47:53.240 回答
1

有几种不同的方法可以做到这一点。我最喜欢的是将数组与indexOf结合使用。

if ( ['a', 'b'].indexOf(foo) > -1 ) {
    console.log('yey');
}
于 2013-01-24T23:47:51.080 回答
1

数组 indexOf是一种解决方案

另一种选择是switch 语句

switch (foo) {
   case "a":
   case "b":
      console.log("bar");
      break;
   case "c":
      console.log("SEE");
      break;
   default:
      console.log("ELSE");
}

其他解决方案也可以是对象查找或正则表达式。

于 2013-01-24T23:50:38.857 回答
1

通常我会为此使用正则表达式:

if (^/a|b$/i.test(foo)) {
  ...
}
于 2013-01-24T23:52:21.557 回答