Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;否则,如果;for循环中的语句在较大的if/else if/else语句中_Javascript - Fatal编程技术网

Javascript &引用;否则,如果;for循环中的语句在较大的if/else if/else语句中

Javascript &引用;否则,如果;for循环中的语句在较大的if/else if/else语句中,javascript,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(exampleObj

可以在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行得到了一个“意想不到的关键字else”(for循环中的“elseif”)。还有别的办法吗


编辑:更新此选项以在循环中使用exampleObject[i]。我的错

以下代码在我看来是错误的,将for循环放在if块中

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

不可以。我认为最好的方法是将
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

这是不可能的。我会尝试用一个更好的例子来告诉你如何做你想做的事,但老实说,我不知道你想做什么。for循环把我弄糊涂了。你能提供更多的信息吗?

总之,不能。你正在用for语句前面的最后一个大括号终止if语句块。

好吧,首先,这不应该:

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

像这样的东西会有帮助吗

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

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

如果你从不使用迭代器,
i
,为什么你甚至有一个
for
循环?你到底想做什么?这可能应该是一个注释。我想了想,但问题的第一部分是它可以做到,我的回答是不可能。他的问题的第二部分是一个更好的例子,这一部分我无法回答,没有一些澄清,我不想在评论中要求澄清他的问题的第二部分,但在回答中回答第一部分JavaScript有
break
。无需设置标志来停止内部循环。
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')
  }
}