javascript中的&&与||的用法

 var x = 3 || null || undefined;
    alert(x)    // 3

    var y = 3&&NaN&&5;
    alert(y);  //NaN

以上 x,y并没有像我们想象中返回的是进行布尔运算,返回的是我们认为的true,false.

布尔假值:0null""undefinedNaN

其实这种特性叫短路求值&& 会返回第一个假值(0null""undefinedNaN),而 || 则会返回第一个真值。

所以 && 有时候会用来代替 if (expression) doSomething()转成 && 方式就是 expression && doSomething()

而 || 比较用来在函数中设置默认值,比如

 
function doSomething(arg1, arg2, arg3) {
    arg1 = arg1 || 'arg1Value';
    arg2 = arg2 || 'arg2Value';
}

/*
不过还需要看具体的使用场景,就比如如果要求 doSomething() 传入的 arg1 为一个数值,则上面的写法就会出现问题(在传入 0 的时候被认为是一个假值而使用默认值)。

*/

&&操作结果

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象

  • 如果两个运算数都是对象,返回第二个对象

  • 如果某个运算数是 null,返回 null

  • 如果某个运算数是 NaN,返回 NaN

||操作结果

  • 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象

  • 如果两个运算数都是对象,返回第一个对象

  • 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null

  • 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN

原文地址:https://www.cnblogs.com/qianxunpu/p/8037988.html