或:||

    console.log( true || false );       //t
    console.log( false || true );       //t
    console.log( true || 0 );       //t
    console.log( 0 || true );       //t
    console.log( 0 || 1 );       //1
    console.log( 1 || 0 );       //1

    console.log(false || 0);    //0
    console.log(0 || false);    //f

    console.log(true || 1);     //t
    console.log(1 || true);     //1

    console.log(10 || 20);      //10
    console.log(20 || 10);      //20

    console.log( 0 || 10 );     //10
    console.log( 10 || 0 );     //10

    var a = 10 || 20;
    var b = undefined || false;
    var c = NaN || null;
    console.log(a)     //10
    console.log(b)     //false
    console.log(c)     //null
总结:
       或  左边出现true即为左边 true的值,若无则继续向右判断,出现true则为true的值,false则为false的值
 
且  &&
 
    console.log( true && false );       //f
    console.log( false && true );       //f
    console.log( true && 0 );       //0
    console.log( 0 && true );       //0
    console.log( 0 && 1 );       //0
    console.log( 1 && 0 );       //0

    console.log(false && 0);    //f
    console.log(0 && false);    //0

    console.log(true && 1);     //1
    console.log(1 && true);     //t

    console.log(10 && 20);      //20
    console.log(20 && 10);      //10

    console.log( 0 && 10 );     //0
    console.log( 10 && 0 );     //0

    var a = 10 && 20;
    var b = undefined && false;
    var c = NaN && null;
    console.log(a)    //20
    console.log(b)    //undefind
    console.log(c)    //NaN
总结:
       或  左边出现false即为左边 false的值,若无则继续向右判断,出现true则为true的值,false则为false的值