演算子の優先順位と結合性


演算子の優先順位と結合性について聞いたことがない場合、またはその概念をまったく理解していない場合は、この記事が役に立ちます.


代数では、掛け算と割り算が足し算と引き算よりも優先順位が高いことをご存知でしょう.

式 1 + 2 * 3 では、最初に 2 * 3 を掛けてから、結果に 1 を加算する必要があります.

さて、Javascript では、この概念も有効で、単純に Operator Precedence と呼ばれます.



優先順位の範囲は 1 ~ 19 です.
  • 乗算の優先順位は 13 です.
  • 加算の優先順位は 12 です.
  • グループ化 (式を括弧で囲む) が最も優先されます. (19)

  • console.log(1 + 2 * 3);
    // The multiplication is done first, the expression turns into
    console.log(1 + 6)
    // The addition is then evaluated, the result is 7
    
    console.log((1 + 2) * 3);
    // The grouped expression is read first, the expression turns into
    console.log(3 * 3)
    // The multiplication is then evaluated, the result is 9
    


    評価の順序は、演算子の結合性にも影響されます.

    結合性は、式が評価される方向です : 右から左または左から右.



    代入演算子は右結合です.つまり、右から左に読み取られます :

    a = b = 5
    //is the same as
    a = (b = 5)
    


    例外



    ❗ グループ化された式が常に最初に読み込まれるとは限りません.
    条件付き評価を使用する場合、最初に条件がチェックされ、次に括弧内の式が評価されます.

    a || (b * c);
    //'a' is evaluated first, then (b * c) is evaluated if 'a' is false
    a && (b < c);
    //'a' is evaluated first, if 'a' is true (b * c) is evaluated
    



    もともと私の blog に投稿されました. Web 開発の詳細については、私のアカウントをご覧ください.