みこむらめもむらむらむら

なんかHTML5とかJS勉強とかやりながらめもを綴るブログ

【JavaScript】論理演算子のLL的利用法

【JavaScript】演算子②でも論理演算子やってるんだけれど
先生からさらに説明があったのでまとめる

JavaScriptっていうかプログラミング全般だと思うけれど
一旦JavaScriptカテゴリで

なにそれ今更じゃね?って感じの方がほとんどだと思うけど
はじめて知ったんだ恥ずかしい‥

論理積演算子&&、論理和演算子||をLL的に利用する

【JavaScript】演算子②では&&と||って‥

複数の条件式または論理値を
論理的に結合し、その結果を真偽で返す

  • &&(AND)
    • 左右の式がともにtrueの場合はtrue
    • 例>>100 == 100 && 1000 == 1000 //true
  • ||(OR)
    • 左右の式のどちらかがtrueの場合はtrue
    • 例>>100 == 100 || 1000 == 500 //true
  • !(NOT)
    • 式がfalseの場合はtrue
    • 例>>!(1000 == 500) //true

てな感じだったわけで
結合したものが真偽かってところに関しては
すごく利用したことがあったわけです私は

まあこんなの

var x = 1;
var y = 2;
console.log(x == 1 && y == 1);  //false
console.log(x == 1 || y == 1);  //true

それに対して今回作業中に出てきたのが

var a = 0;
var b = 1;
var c = 2;

x = a && b;
y = b && c; 

x;//  0
y;//  2

こんな感じのでした

なにそれどういうこと?ってなりました

で、先生の登場

今回説明していただいたのは
&&と||は最終的に真偽を判別した値を代入する
という特徴がある!!ということ

この例xの場合

  • a && bの左式であるaは0、要はfalseになる
  • 論理積演算子なので右式は評価されず、最終的にこのa && bはfalse
  • falseだと判別したのが左式だから左式の値である0がxに代入される

この例yの場合

  • b && cの左式であるbは1、要はtrueになる
  • 論理積演算子なので右式も評価される
  • 右式cは2、trueなので最終的にこのb && cはtrue
  • trueだと判別したのが右式だから右式の値である2がyに代入される

なるほどー
論理和演算子も同じく‥

var a = 0;
var b = 1;
var c = 2;

x = a || b;
y = b || c; 

x;  //1
y;  //1

この例xの場合

  • a || bの左式であるaは0、要はfalseになる
  • 論理和演算子なので右式も評価される
  • 右式bは1、tureなので最終的にこのa || bはture
  • tureだと判別したのが右式だから右式の値である1がxに代入される

この例yの場合

  • b || cの左式であるbは1、要はtureになる
  • 論理和演算子なので、この時点でb || cはtureになる
  • tureだと判別したのが左式だから左式の値である1がyに代入される

ふむふむ!
ifとか三項演算子のかわりに
つかったりできると‥勉強になります!