私はこのような何か:Javascriptの操作の実行順序は常に同じであることが保証されていますか?
var x = 5;
console.log( x + (x += 10) ); //(B) LOGS 10, X == 20
console.log( (x += 10) + x ); //(A) LOGS 0, X == 30
(A)と(B)との間に返された値の差は、それが評価されてしまう時にx
の値によって説明されます。私はこのような舞台裏何かが起こる必要があることを把握:
TIME ---->
(A) (x = 5) + (x += 10 = 15) = 20
(B) (x += 10 == 15) + (x == 15) = 30
しかし、これはx
は、それが書かれたのと同じ左から右順に評価された場合にのみ当てはまります。
だから、私はこのことについていくつかの質問を持って、
は、すべてのJavascriptの実装のために真であるとを保証このですか?
これは標準でこのように定義されていますか?
または、これは何らかの種類のの定義されていない動作 Javascriptの世界では?
は最後に、同じ考えが呼び出しを機能するように適用することができ、
var x = 5;
console.log(x += 5, x += 5, x += 5, x += 5); // LOGS 10, 15, 20, 25
彼らはまた、順にを評価されるように見えるが、これは常に起こるべきことを強く保証はありますか?
これは役立つのですか、特にオペレータの実行順序についてのみ質問していますか? http://stackoverflow.com/questions/14863430/does-javascript-have-undefined-behaviour –
私は特に保証された/予測可能な実行命令について尋ねています。しかし、それは素敵なリソースだった、それらのことを知らなかった。ありがとう。 – almosnow
私はこれが何らかの質問をクリアすると信じています。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence – Hogan