zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    树形地铁系统[树的最小表示]
    156. 矩阵[二维的hash]
    兔子与兔子
    滑动窗口【单调队列入门题】
    【YBTOJ】生日相同
    【YBTOJ】移位包含
    【YBTOJ】【HDUOJ 3085】逃离噩梦
    【YBTOJ】立体推箱子
    【CodeForces 1408F】Two Different
    【Luogu P3338】[ZJOI2014]力
  • 原文地址:https://www.cnblogs.com/qianxunpu/p/8037988.html
Copyright © 2011-2022 走看看