JavaScript如果字符串等于其他值

JavaScript If string is equal to anything else

本文关键字:其他 于其他 如果 字符串 JavaScript      更新时间:2023-10-26

如何检查字符串是否与其他选项不相等?我知道我可以只做一个简单的else语句,但我不确定它是否有效,因为我的if中的代码没有组合,但它们只是if()else if(),但没有else。在不使用switch/case语句的情况下,我如何执行else语句/检查是否有其他内容?

下面是一个例子。

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

警告

我无法将代码作为独立片段插入此处,因为它超过了最大字符限制。我只能添加一个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语句时引发标志,这样在结束时,您可以检查这些标志,如果没有一个是真的,那么您可以随心所欲。

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');
}