短絡評価:JavaScriptにおける値の評価順序と動作

  • 値が定まった時点で評価をそれ以上行わないことを短絡評価と呼ぶ。
  • 例えば[JavaScript]では && 演算子が該当する。
  • && は左から順に評価しtrueだった場合は右辺の評価を続ける。
    • 右辺が最後の評価対象の場合はその評価結果を返す。
    • true以外だった場合(false, undefined, 2)評価をそれ以上行わず、その時点の評価結果を返す。
  > true && console.log("hello");
  hello
  undefined
  > false && console.log("hello");
  false
  > console.log("hello") && "msg";
  hello
  undefined
  • && は暗黙的な型変換を行い、値を真偽値に変換する。
  • false に変換される値はfalsyな値と呼ばれる。

複数つなげた場合の動作

  • && を複数つなげて書くと短絡評価は左から右へと順番に処理される。
  • すべての値がtrueの場合の動作。
    • 1番目の値を評価し、trueなので真ん中の値を評価する。
    • 2番目の値を評価し、trueなので最後の値を評価する。
    • 3番目の値を評価し、結果として返す。
   > true && true && 'hello 1'
   'hello 1'
   > 'hello 1' && 'hello 2' && 'hello 3'
   'hello 3'
  • 途中の値がfalseの場合の動作。
    • 中央の値を評価し、falsyな値のためその値を結果として返す。
   > true && null && 'hello'
   null
  • 最後の値がfalseの場合の動作。
    • 最後の値を評価し、falsyな値のためその値を結果として返す。
   > true && true && null
   null