为什么此JavaScript代码不起作用?

时间:2016-05-26 18:40:31

标签: javascript

我有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,

感谢帮助人们,问题是由外部脚本引起的。是的,我删除了分号;)

4 个答案:

答案 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)

感谢您注意分号的人,问题是由外部脚本引起的。