js利用|&&賦値小技巧

4421 ワード

if判定、論理演算子などのbooleanタイプの数値を返す必要がある場合、jsオブジェクトはデフォルトでbooleanタイプのデータに変換されます.null,undefined,0,""false,その他trueを返します.
また、|&&には、次のような特性があります.
var a = b || c;
bデフォルト値
cデフォルト
a値を取る
true
true
b
true
false
b
false
true
c
false
false
c
var a = b && c;
bデフォルト値
cデフォルト
a値を取る
true
true
c
true
false
c
false
true
b
false
false
b
この2つの特性により,‖と&&を用いて付与することができる.場合によっては、コードを簡略化したり、可読性を高めたりすることができます.
以下に示すいくつかのコードのセット内のbとcの付与は等価である.
    var b;

    if(b != null){
        b = b;
    }else {
        b = 2;
    }

    var c = c || 2; 
    var b;

    if(b){
        b = 1;
    }else {
        b = 2;
    }

    var c = (c && 1) || 2;
    var b;

    if(b){
        if(1 == 1){
            b = 1;
        }else {
            b = 2;
        }
    }else {
        b = 3;
    }

    var c = (c && ((1 == 1 && 1) || 2)) || 3;
    var b;

    if(2 > 1){
        b = 1;
    }else if(3 > 1){
        b = 2;
    }else {
        b = 3;
    }

    var c = ((2 > 1) && 1) || ((3 > 1) && 2) || 3;
    var b;

    if(2 > 1){
        b = 1;
    }else if((1 == 1 || 1 == 2) && 3 == 3){
        b = 2;
    }else {
        b = 3;
    }

    var c = ((2 > 1) && 1) || (((1 == 1 || 1 == 2) && 3 == 3) && 2) || 3;

簡単に言えば、if->値用&&、else用|,ifの中に内容が多いものは括弧に書くことができます.
実際の使用では,この方法を使用することに実用的な意味があると最も簡単な論理判断しかなく,コードをより簡潔にすることができる.実際、多くの有名なjsフレームワークはこのような使い方に満ちています.后ろの书き方については、使わないでください!!!書くと殴られやすい.