Ich habe für die Schleife, die das Array mit Argumenten durchläuft. Wenn das nächste Argument "?", "&" oder "||" ist, sollte es kein Komma hinzufügen, es wird jedoch immer hinzugefügt. Ich konnte nicht verstehen, warum, hier ist der Code:Warum funktioniert dieser JavaScript-Code nicht?
var args = ["arg1","arg2","?","arg3"];
var query = "";
for (var i = 0; i < args.length; i++) {
\t \t switch (args[i]) {
\t \t \t case "?":
\t \t \t \t query += " where ";
\t \t \t \t break;
\t \t \t case "&":
\t \t \t \t query += " and ";
\t \t \t \t break;
\t \t \t case "||":
\t \t \t \t query += " or ";
\t \t \t \t break;
\t \t \t default:
\t \t \t \t if (args[i+1] != "?");
\t \t \t \t {
\t \t \t \t \t query += args[i] + ", ";
\t \t \t \t \t break;
\t \t \t \t }
\t \t \t \t query += args[i] + " ";
\t \t \t \t break;
\t \t }
\t }
document.write(query);
Wenn ich schreibe dies (dies wird gesplittet durch "" und Array args gesendet):
arg1 arg2 ? arg3
Es druckt es so:
arg1, arg2, where arg3, // while it should be arg1, arg2 where arg3,
Dank für das Helfen von Leuten, Problem wurde durch ein externes Skript verursacht. Und ja, I entfernt Semikolon;)
wo ist es anders? Arg1, arg2, wo arg3, // während es arg1 sein sollte, arg2 wo arg3, '? –
@NinaScholz das Komma nach 'arg2' vor' wo' ist anscheinend nicht erwünscht. – Pointy
Drucke wo? Sie "drucken" wahrscheinlich ein Array, und seine 'toString'-Methode fügt das Komma hinzu. – Teemu