2017-08-30 9 views
-1

Mozillaによれば、===演算子は より高い優先順位を持ちます。演算子、私は期待しているものです。JavaScript演算子の優先順位

ただし、このステートメントはfalseではなく1に評価されます。

let x = 1 || 0 === 0; // x === 1; 

あなたはブール値を取得するために括弧でラップする必要があります。

let x = (1 || 0) === 0; // x === false; 

できますか?

これは等価演算子については何も持っていません。この質問のDUP、ではありませんNOTE - JavaScript OR (||) variable assignment explanation

+3

左から右に評価されます。 '||'の左辺は真理値に評価されるので、 '||'の右辺は評価されません。 – Will

+0

[JavaScript OR(||)の変数割り当ての説明](https://stackoverflow.com/questions/2100758/javascript-or-variable-assignment-explanation) –

+0

[短絡の評価](https:// – j08691

答えて

4

高いoperator precedenceは、オペランドの周りの括弧のようなものです。

let x = 1 || (0 === 0); 

第2の部分があるため1 のtruthy価値の評価決してます。

4

||は短絡回路演算子であり、条件は左から右に評価されます。
left || rightの場合、leftの条件がtrueの場合、条件全体はtrueと評価され、rightは評価されません。ここで

let x = 1 || 0 === 0; // x === 1; 

x = 1xから1割り当て、||後の第2の条件がif (1)として評価されることはありませんがtrueevaluatedです。

そして、ここで:

let x = (1 || 0) === 0; // x === false; 

(1 || 0)if (1)はまだtrueevaluatedあるようtrueに評価されます。
そしてtrue === 0falseと評価されます。
したがってxは、falseと評価されます。

関連する問題