我有for循环,它通过参数遍历数组。当下一个参数是“?”,“&”或“||”,它不应该添加逗号,但是,它总是添加。我无法理解为什么,这是代码:
var args = ["arg1","arg2","?","arg3"];
var query = "";
for (var i = 0; i < args.length; i++) {
switch (args[i]) {
case "?":
query += " where ";
break;
case "&":
query += " and ";
break;
case "||":
query += " or ";
break;
default:
if (args[i+1] != "?");
{
query += args[i] + ", ";
break;
}
query += args[i] + " ";
break;
}
}
document.write(query);
当我输入它时(这被“”拆分并发送到数组args):
arg1 arg2 ? arg3
它打印出来像这样:
arg1, arg2, where arg3, // while it should be arg1, arg2 where arg3,
感谢帮助人们,问题是由外部脚本引起的。是的,我删除了分号;)
答案 0 :(得分:5)
您的if
声明已损坏:
if (args[i+1] != "?"); // <---- remove that semicolon
{
query += args[i] + ", ";
break;
}
你有一个流浪的分号。这不是语法错误,但这意味着if
没有做任何事情。添加逗号始终的代码会运行,并在未添加逗号的代码之前退出switch
。
答案 1 :(得分:1)
if和block之间有一个分号:
if (args[i+1] != "?");
应该是
if (args[i+1] != "?")
答案 2 :(得分:1)
可能有完全不同的方法来解决此问题,这会使您的代码更容易扩展,而不会加深[{"key":"name"}]
或if
一个简单的例子,
switch
答案 3 :(得分:0)
感谢您注意分号的人,问题是由外部脚本引起的。