みかづきブログ その3

3ヶ月つづけてみました。

論理積を確認しよう。

論理積とは

演算子でいうと、

&&

こいつです。

var case1 = true  && true,  //  => true
    case2 = true  && false, //  => false
    case3 = false && false; //  => false

基本的にはこんな感じで使われます。
&&でつながっている部分がすべてtrueならtrueが、
1つでもfalseならfalseが返ってきます。

false を 0、true を 1 としたときの積の値と同等になるため、論理積と呼ばれています。

var case1 = 1 * 1, //  => 1
    case2 = 1 * 0, //  => 0
    case3 = 0 * 0; //  => 0

値が複数あってもルールは変わりません。

var case4 = true && true && true && true && true && true, // => true
    case5 = false && true && true && true && true && true, // => true
    case6 = true && true && true && true && false && true; // => false

そう。これは全員揃っていないと発車しない修学旅行のバスみたいなものです。
1人でもいない生徒(false)がいるとバスは出発しないのです。

論理積で真偽値以外の値を評価する

前回 if文の条件に真偽値以外の値を入れてみましたが、
論理積も真偽値以外の値を評価することができます。

var case7 = true && "( ' jjj ' )", // => "( ' jjj ' )"
     case8 = false && "( ' jjj ' )", // => false
     case9 = 0 && "( ' jjj ' )"; // => 0

という感じです。
&& で繋いだ値がすべてtruly ならば最後のtrulyの値が、
1つでもfalsyの値があれば最初に出てきたfalsyの値が返され、その後の処理は行われません。

なので、

var case10 = returnTrue() && returnFalse() && returnTrue() && returnTrue() && returnTrue(); // => false

function returnTrue() {
    alert(true);
    
    return true;
}

function returnFalse() {
    alert(false);
    
    return false;
}

というようなスクリプトを書くと、
returnFalseを実行した時点で、case10の値がfalseに決定され、その後のreturnTrueは実行されません。

この特性は、あるかどうかがわからないオブジェクトのプロパティにアクセスする際などに便利に使えます。

var hoge = obj && obj.width; // hoge には objがあればobj.width の 値が、なければ undefined がはいります。

今回は以上です。