Wenn ich etwas tun, wie folgt aus:Ist die Reihenfolge der Ausführung von Operationen in Javascript garantiert immer gleich?
var x = 5;
console.log( x + (x += 10) ); //(B) LOGS 10, X == 20
console.log( (x += 10) + x ); //(A) LOGS 0, X == 30
Der Unterschied in der zurückgegebene Wert zwischen (A) und (B) durch den Wert der x
zu der Zeit erklärt wird ausgewertet wird. Ich vermute, dass hinter den Kulissen so etwas passieren soll:
TIME ---->
(A) (x = 5) + (x += 10 = 15) = 20
(B) (x += 10 == 15) + (x == 15) = 30
Aber dies gilt nur dann, wenn und nur wenn x
in den gleichen von links nach rechts ausgewertet wird, dass es geschrieben wurde.
Also, ich habe ein paar Fragen darüber,
Ist die garantiert für alle Javascript-Implementierungen um wahr zu sein?
Ist es vom Standard so definiert?
Oder ist dies eine Art von undefined Verhalten in Javascript-Welt?
Schließlich könnte die gleiche Idee angewendet werden, um Anrufe zu funktionieren,
var x = 5;
console.log(x += 5, x += 5, x += 5, x += 5); // LOGS 10, 15, 20, 25
Sie scheinen auch um ausgewertet zu werden, aber gibt es eine stärkere Garantie, dass dies immer passieren sollte?
Hilft dies oder fragt Ihre Frage speziell nach der Ausführungsreihenfolge des Operators? http://StackOverflow.com/Questions/14863430/does-Javascript-have-undefined-behaviour –
Ich frage besonders über garantierte/vorhersehbare Ausführungsreihenfolge. Aber das war eine nette Quelle, wusste nicht über diese Dinge. Vielen Dank. – almosnow
Ich glaube, das sollte alle Fragen klären https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence – Hogan