ReactのためのJavaScript - 論理演算子とショートサーキット評価


はじめに

Reactを学ぶためのモダンなJavaScriptについてまとめます。今回は論理演算子とショートサーキット評価(短絡評価)について書いていきます。

論理演算子

論理演算は3つ種類があります。

論理積(AND) / 論理和( || ) / 否定(NOT)の3つです。それらを表す演算子を論理演算子といい、JavaScriptではそれぞれ、&& / || / ! という記号で表します。

論理演算子は左から右へ評価されるので、それを踏まえてそれぞれの特徴をみてみましょう。

演算子動き
AND &&    var1 && var2 var1がtrueの場合、var2を返します。falseの場合、var1を
返します。なので、var1, 2ともにtrueの場合はtrueを、どちらかが
falseの場合はfalseを返します。
OR || var1 || var2var1がtrueの場合、var1を返します。falseの場合、var2を
返します。なので、var1/2ともにtrueの場合はtrueを、どちらかが
falseの場合もtrueを、どちらともfalseの場合はfalseを返します。
NOT ! ! varvarがtrueの場合、falseを返します。
falseの場合、trueを返します。


ベン図で表すとこのようになります。

論理演算子は左から右へ評価されるため、左辺が評価された時点で右辺の評価は行われません。これをショートサーキット評価(短絡評価)といいます。

例えば、A && B という論理式があった場合、Aがfalseならその時点で式全体の結果はfalseに決定します。A || Bという式の場合、Aがtrueであればその時点で式全体の結果はtrueに決定します


ショートサーキット評価による代入

以上の論理演算子の特徴を踏まえると、if文を使わなくても↓のように条件に応じて変数に代入が行えます。ショートサーキット評価による代入をすることで、コードの簡略化パフォーマンスの向上が見込めます。

論理積(AND)

let param1 = 'hello';
let param2 = 'bye';
let a = param1 && param2; //=> byeが入る

let b = 'hello' && 'bye'; //=> byeが入る

let param1;
let param2 = 'bye';
let c = param1 && param2; //=> undefined


論理和(OR)

let param1 = 'hello';
let param2 = 'bye';
let a = param1 || param2; //=> helloが入る

let b = 'hello' || 'bye'; //=> helloが入る

let param1;
let param2 = 'bye';
let c = param1 || param2; //=> byeが入る


否定(NOT)

let param;
let a = !param; //=> trueが入る

let b = !'hello'; //=> falseが入る


今回は以上になります。ご覧頂きありがとうございました。

こちらで他のテーマも扱ってるのでよかったらぜひ!