Javascript &引用;否则,如果;for循环中的语句在较大的if/else if/else语句中
可以在JavaScript中执行类似的操作吗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
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')
}
}