Wenn ich benutze:
1.09 * 1; // returns "1.09"
Aber wenn ich benutze:
1,09 * 1; // returns "9"
Ich weiß, dass 1,09 keine Zahl ist.
Was macht das Komma im letzten Code?
Mehr Beispiele
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
alert
nimmt nur ein Argument. Alles danach wird verworfen.
arguments
stattdessen das Objekt verwenden, das beliebig lang sein kann). Selbst mit modernem kompiliertem JS gibt es keine Möglichkeit, im Voraus zu sagen, wie viele Argumente eine Funktion annehmen würde. Bedenken Sie Folgendes: function test() { args=[]; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i] + 1); } ;
Der Interpreter müsste wissen, wie die Funktion verwendet wird, um zu wissen, wie viele Argumente er benötigen würde. Stattdessen wertet es alles aus.