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
javascript
comma-operator
Topera
quelle
quelle
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.Antworten:
Quelle: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Beispielsweise wird der Ausdruck als
1,2,3,4,5
ausgewertet5
. Offensichtlich ist der Komma-Operator nur für Operationen mit Nebenwirkungen nützlich.quelle
for
Schleife verwendet werden.continue
Punkte ohne Duplizierung zulässt , aber dann sollten Sie nicht mehrerecontinue
Punkte haben.Noch etwas zu beachten:
quelle
alert("1", alert("2", alert("3")))
last
Operanden zurück.Schauen Sie hier - das Komma steht für mehrere Ausdrücke / Anweisungen. Zum Beispiel könnten Sie in Ihrem Code eine Zeile wie diese verwenden:
Dies würde alle drei Variablen deklarieren, ohne zu schreiben:
Hoffentlich hilft das.
quelle
var
Erklärungen nicht das Komma Operator , auch wenn es ein Komma ist) und (2) kann man nicht trennen Anweisungen unter Verwendung der Kommaoperatoren; Es sind nur Ausdrücke zulässig.https://stackoverflow.com/a/3561056/5934465
Es sollte so sein!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
quelle
a,b,c,d
is((((a),b),c),d)
Das Hinzufügen / Ändern von Eigenschaften zu einem Objekt und das Zurückgeben in derselben Zeile ist ein möglicher Anwendungsfall:
Die obige anonyme Funktion gibt ein Objekt mit zufälligen Werten zurück, die größer als der Eingabewert sind, oder, falls keine vorhanden sind, mit dem Eingabewert selbst in einem Array, das in der enthalten ist
bigger
Eigenschaft enthalten ist.Es ist immer noch syntaktischer Zucker (wie Pfeilfunktionen ), aber es verkürzt die Anzahl der Zeilen ... Ich frage mich, ob einige JS-Minifier den Code auf ähnliche Weise automatisch erkennen und anpassen. Führen Sie es in Ihrer Konsole aus:
quelle