“else if if”for循环内更大的if / else if / else语句

时间:2011-03-03 19:10:26

标签: javascript

是否可以在JavaScript中执行此类操作?

if (name == 'foo') {
    exampleFunction('some_arg');
}
else if (name == 'bar') {
    exampleFunction('another_arg');
}
for (i in exampleObject) {
    else if (name == exampleObject[i].name) {
        exampleFunction(exampleObject[i].arg);
    }
}
else {
    exampleFunction('default')
}

我试了一下,但在第8行得到了一个“意外的关键字”(for循环中的“else if”)。还有另一种方法吗?

编辑:更新此内容以在循环中使用exampleObject [i]。我的坏!

7 个答案:

答案 0 :(得分:1)

没有。我认为实现此目的的最佳方法是将for循环移动到else块并执行以下操作

if (name == 'foo') {
    exampleFunction('some_arg');
}
else if (name == 'bar') {
    exampleFunction('another_arg');
}
else {
  var isFound = false;
  for (i in exampleObject) {
    if (name == exampleObject.name) {
      exampleFunction(exampleObject.arg);
      isFound = true;
    }
  }
  if (!isFound) {
    exampleFunction('default')
  }
}

注意:此代码中似乎还有其他错误。 for循环声明i迭代变量但从未实际使用过它。您的意思是if循环中的for检查使用i代替name吗?

答案 1 :(得分:1)

if (name == 'foo') {
    exampleFunction('some_arg');
}
else if (name == 'bar') {
    exampleFunction('another_arg');
}
else {
  var isFound = false;
  for (i in exampleObject) {
    if (name == exampleObject.name) {
      exampleFunction(exampleObject.arg);
      isFound = true;
      break;
    }
  }
  if (!isFound) {
    exampleFunction('default')
  }
}

这是正确的解决方案。它会使循环中的if语句短路,就像短路一样。这与#1的解决方案相同,但它正确地短路。

答案 2 :(得分:0)

以下代码对我来说是错误的,如果阻止

,则在for内部使用for循环
for (i in exampleObject) {
    else if (name == exampleObject.name) {
        exampleFunction(exampleObject.arg);
    }

答案 3 :(得分:0)

这是不可能的。我会试着想出一个更好的例子来告诉你如何做你想做的事,但说实话,我不确定你想做什么。 for循环令我困惑。你能提供更多信息吗?

答案 4 :(得分:0)

总之,没有。您正在使用for语句之前的最后一个大括号终止if语句块。

答案 5 :(得分:0)

对一个人来说,不应该这样:

for (i in exampleObject) {
    else if (name == exampleObject.name) {
        exampleFunction(exampleObject.arg);
    }
}

是这样的:

for (i in exampleObject) {
    else if (name == i.name) {
        exampleFunction(i.arg);
    }
}

虽然我对js知之甚少(如果有的话),但这只是猜测甚至不是你所谈论的问题。

你会不喜欢这样做:

bit = 0;
if (name == 'foo') {
    exampleFunction('some_arg');
}
else if (name == 'bar') {
    exampleFunction('another_arg');
}
else {
    bit = 1;
}

bit2 = 0;
while(bit == 1){
    for (i in exampleObject) {
        if (name == i.name) {
            exampleFunction(i.arg);
            bit = 0
            bit2 = 1;
        }
    }
}

if(bit2 = 0){
    exampleFunction('default');
}

答案 6 :(得分:0)

这样的事可能会有所帮助吗?

found = false

if (name == 'foo') {
    found = true 
    exampleFunction('some_arg');
}
else if (name == 'bar') {
    found = true
    exampleFunction('another_arg');
}
else {
  for (i in exampleObject) {
    if (name == i.name) {
        exampleFunction(i.arg);
        found = true
        break;
    }
  }
}

if !found:
   exampleFunction('default')