这样一个代码:
Javascript:
var a = 1 && 2 && 3;//执行后的输出结果:3
如果在c语言:
int a=1 && 2 && 3;//执行后输出结果:1c语言好理解,逻辑运算后返回0或1,不知道Javascript为什么会产生这样结果,上网一查:
“a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。”谁给具体解释一下。

解决方案 »

  1.   

    js是所类型,在逻辑判断中,会将值转换为boolean值。
    && 是指 有假则返回
    || 是指 有真则返回 alert( 0 && 1 )
    alert( 0 || 1 )
      

  2.   

    var a = 1==1 && 2==2 && 3==3;
    var b = 1==1 && 2!=2 && 3==3;
    if(a){}
    if(b){}
    其实就是布尔运算嘛
      

  3.   

    var a = 1 && 3;//返回3
    就是当a为真时返回第二个数。做为if判断时会转换为boolean类型。
    而在c语言中,&& 和 || 将直接返回0或1(真、假)。
    就是不同吧?
      

  4.   

    参考资料:ECMAScript Boolean 运算符
      

  5.   

    &&和||没有强制返回值必须是boolean值
      

  6.   

    “a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。”
    知道这个原理就不难理解啦
    var a = (1 && 2) && 3;
    先判断1&&2,结果返回2,然后判断 2&&3,返回3咯等号(==)
    如果比较的两个元素类型不一样时要进行类型转换,规则如下:
    1. 如果有一个是Boolean类型,一个是数字类型,则将Boolean类型转化成数字,false转化成0,true转成1
    2. 如果有一个是字符串类型,一个是数字类型,则把字符串转化成数字
    3. 如果有一个是字符串类型,一个是对象类型,则把对象转化成字符串(toString())
    4. 如果有一个是对象类型,一个是数字类型,则把对象转化成数字
    5. null和undefined相等
    6. 不能把null和undefined转化成其他值
    7. 如果有一个为NaN,等号返回false,非等号返回true。即使两个都是NaN,等号任然返回false
    8. 如果两个元素是对象,这比较的是他们的引用值。如果俩个运算数指向同一个对象,那么等号返回true,不相等