zoukankan      html  css  js  c++  java
  • JS--该死的&&和||

      近段时间搞前端js,零零星星的看了一些框架源码,发现大量存在&&和||,其语法看的我是头冒青烟,也不知道怎么回事,度娘搜吧,现在写下来,以防忘掉。

      

    先来约束一下用词:有一表达式A : expr1 &&(||) expr2,包含左右两个表达式expr1和expr2。

      表达式:

        在javascript中除了false表示假之外,"",undefined,null,0都可以表示假,其他的都表示真,像true,'q',2等等...

      短路:

        对于&&,当 expr1 => false 的时候,A表达式便可end;expr1 => true的时候,要继续看expr2的值,如果expr2 => false,则A表达式为false,否则为true。

        对于||,当 expr1 => true 的时候,A表达式便可end;expr1 => false的时候,要继续看expr2的值,如果expr2 => false,则A表达式为false,否则为true。

      简单规则:

        有一个指针p,用来指示执行A表达式的过程,当p指向expr1的时候,计算expr1的值,如果计算出expr1的值无法使A表达式end,例如 false || true,就将p指针指向expr2。

      当A表达式end的时候,A表达式的值就是指针p指向那一部分。

      例子:

     'a' && 0  => 首先p指向'a',由于'a'=>true,无法end该表达式,指针p指向0,结果就是无论0是真是假,表达式回end,此时指针指向0,也就是说返回值是0。
     false || 3  =>首先P指向false,由于false=>false,无法end该表达式,指针后移,你明白了?无需判断,表达式返回3。
     true || 'e' =>首先p指向true,直接end该表达式,返回值为true.
  • 相关阅读:
    在eclipse中安装 Activiti Designer插件
    Maven settings.xml配置(指定本地仓库、阿里云镜像设置)
    unity调用MMBilling_2.4.2 Android SDK.
    unity与Android相互调用
    Unity3D研究院之与Android相互传递消息
    Unity3D研究院之打开Activity与调用JAVA代码传递参数
    Objec c 字符串比较
    判断不同IOS设备
    Unity3D研究院之IOS本地消息通知LocalNotification的使用
    【Unity3D】iOS 推送实现
  • 原文地址:https://www.cnblogs.com/WreckBear/p/6073654.html
Copyright © 2011-2022 走看看