JavaScript 如果字符串等于任何其他内容

JavaScript If string is equal to anything else

如何检查字符串是否不等于任何其他选项?我知道我可以做一个简单的 else 语句,但我不确定它是否有效,因为我的 if 中的代码没有组合,但它们只是 if()else if() 用于它自己,但没有 else。如果不使用 switch/case 语句,我怎么能做 else statement/check 呢?

这是一个例子。

if(object1 === "string")  {
  function1();
}
if(object1 === "string2")  {
  function2();
if(object2 === "string" && variable === 10)  {
  function1();
}
if(object1 || object2 === "")  {
  alert("That's not a valid option!");
}

警告

我无法在此处插入代码 standalone or snippet,因为它超过了最大字符数限制。我只能添加一个 JSFIDDLE。给您带来的不便请见谅。

JSFIDDLE

在不合并 if/else if/else 的情况下,您可以通过两种主要方式轻松实现

function foo(opt) {
    if (opt === 'this') { return true; }
    if (opt === 'that') { return 'something else'; }
    /* Code here represents the case that opt is not this or that */
 }

另一种更复杂的方法是拥有某种选项数组,然后检查所有选项,但这是一个糟糕的模式,你真的应该考虑使用 if/else if/else 作为组合树(不确定你是否真的解释了为什么你不能这样做。

function foo(opt) {
    var checked = ['this', 'that'];
    if (opt === 'this') { return true; }
    if (opt === 'that') { return 'something else'; }
    if (checked.indexOf(opt) === -1) { return 'fall through case'; }
}

开关也是可能的,但这只是组合 if/else if/else 的变体,所以如果你不能使用后者,我看不出前者有什么帮助

同样,以上是一个错误的模式,但如果出于某种原因这是你必须要做的,那么就有一个实现。

另一种解决方案是在执行其中一个 if 语句时引发标志,这样在最后,您可以检查这些标志,如果 none 为真,那么您可以做任何您想做的事情。

var flag = false;
if(object1 === "string")  {
  function1();
  flag = true;
}
if(object1 === "string2")  {
  function2();
  flag = true;
if(object2 === "string" && variable === 10)  {
  function1();
  flag = true;
}
if(object1 || object2 === "")  {
  alert("That's not a valid option!");
  flag = true;
}

if(!flag) {
  alert('no other options were validated');
}