“否则如果”语句内的for循环在较大的if/else if/else语句中
是否有可能在JavaScript中做这样的事情?“否则如果”语句内的for循环在较大的if/else if/else语句中
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]。我的错!
下面的代码看起来我错了,有for循环中,如果块
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
,但从未实际使用它。您是否认为在for
回路中使用if
检查使用i
而不是name
?
这是不可能的。我会试着想出一个更好的例子,告诉你如何做你想做的事,但老实说,我不知道你想做什么。 for循环令我困惑。你能提供更多的信息吗?
这可能应该是一个评论。 – nmichaels 2011-03-03 19:17:21
我想过这个,但问题的第一部分是可以做到的,我的回答是不可能的。他的问题的第二部分显示了一个更好的例子,那个部分我不能在没有澄清的情况下回答,我不想在评论中仅就他的问题的第二部分要求澄清,而是在回答中回答第一部分 – 2011-03-03 19:45:24
总之,没有。您将在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');
}
?
JavaScript有'break'。无需设置标志来停止内部循环。 – cHao 2011-03-03 19:29:03
这样的事情可能会有帮助吗?
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 (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的解决方案相同,但它正确短路。
为什么你甚至有'for'循环,如果你从不使用迭代器,'我'? – 2011-03-03 19:13:46
你准备怎么做? – 2011-03-03 19:14:06