是否可以在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]。我的坏!
答案 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')