zoukankan      html  css  js  c++  java
  • JavaScript中烧脑的&&和||

    在js中经常能看到以下的写法:

    var obj1 = a || b || c;
    var obj2 = a && b && c;

    刚看到时,很容易认为返回的两个变量都是 boolean 类型,但实际上返回的却是 a、b、c的其中之一。

    其实这是一种相对安全并且高效的适配写法,可以避免过多的 if 判断,使代码看上去更简洁。

    首先,|| 和 && 比较抽象的逻辑是:

    1、a || b,如果a存在,则返回a;否则返回b

    2、a && b,如果a存在,则返回b,否则返回a

    这种逻辑理解起来确实有点抓狂

    本质是什么呢?
    && 和 || 的作用只有一个:进行布尔值的且和或的运算。当运算到某一个变量就得出最终结果之后,就返回哪个变量

    在javascript中:
    以下内容会被当成 false 处理:"" , false , 0 , null , undefined , NaN
    其他都是 true

    注意:字符串 "false" 也会被当做 true 处理,在未转型的情况下他是字符串,属于一个对象,所以是 true

    所以:
    a || b:     如果 a 是 true,那么 b 不管是 true 还是 false,都返回 true。因此不用判断 b 了,这个时候刚好判断到 a,因此返回 a。
                    如果 a 是 false,那么就要判断 b,如果 b 是 true,那么返回 true,如果 b 是 false,返回 false,其实不就是返回 b 了吗。


    a && b:  如果 a 是 false,那么 b 不管是 true 还是 false,都返回 false,因此不用判断 b 了,这个时候刚好判断到 a,因此返回 a。
                    如果 a 是 true,那么就要再判断 b,和刚刚一样,不管 b 是 true 是 false,都返回 b。

  • 相关阅读:
    MySQL性能优化
    性能测试结果分析
    TFS使用之代码管理
    新博开通,近期将推出系列博客之测试工具篇!
    绝对受用的TFS操作指南
    2008 & 2005 TFS 安装心得及安装时遇到的问题!
    测试用例如何进行评审?
    cordova H5打包APK关键几点记录
    Silverlight+wcf 结合窗体验证演示
    两道js笔试题
  • 原文地址:https://www.cnblogs.com/netWild/p/10555638.html
Copyright © 2011-2022 走看看