zoukankan      html  css  js  c++  java
  • Javascript 布尔操作符总结

        在一门编程语言中,布尔操作符的重要性堪比相等操作符。如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了。在像javascript这样弱类型语言更有其妙用,让我们的代码,简捷可靠。布尔操作符一共有3个: 与、或、非。

    特性:

     

     先来讨论一下,最简单的‘非!’ 

     相对与和或来说,非更简单一点,先把操作数转换为布尔值,再取反,值不是true,就是false.

    结论:逻辑非的返回值最后只有两个:true or false.      

    与和或:

    而与和或并不总是返回布尔值,&&和||操作主要遵循几大原则: 

    1.短路操作原则:如果第一个操作数能决定操作结果,就不会再对第二个操作数求值,直接返回第一个操作值。 

            2.求值过程中会被转型生成副本,但是返回值是原来值;

      javascript中的逻辑操作中的&&||操作并不是总是返回TrueFalse,它返回的值是最后确定结果的值,例:

    Null&&true         // null就确定结果了返回 null
    
    true&&undefined     // undefined确定结果返回undefined
    
    Object&&{}&&[]&&2     //返回2
    
    Object&&{}&&2&&[]     //空数组
    
     Null||9                        //   值为9
    
    null||9||undefined      // =9
    
    null||undefined      // undefined

    概括的说:

               &&操作:值为真时,返回最后一个值,到最一个才能确定结果;

                           值为假时,返回第一个假值,一旦有假值结果确定为假.

               ||操作 :值为真时,返回第一个真值,一旦有真结果为真;

                           值为假时,返回最一个值,到最一个才能确定结果.

                          所以说,与和或操作,返回的是最后确定结果的值

    结论:与和或操作,返回的是最后确定结果的值

    用法:

                  可写出简练的代码。

    与:

           1.通过判断某个对象是否存在来赋值;

    var object=object1&&object2; //当object1存在时才赋object2的值给object.

    2.可以防止访问属性错误(原理同1);

              查询一个不存生的属性并不会报错,但如果对象不存在,试着查询这个不存在属性就会报错。

    var box;
    
    var len=box.length;//抛出一个类型错误异常,程序不向下解析
    
    var len=box&&box.length;//不会报错

     或:

    1. 可优先选取值。

            Var object=object1||object2; //优先object1

                     2.优先执行函数,以下是Jquery中$.globalEval的源码

        globalEval: function( data ) {
            if ( data && rnotwhite.test( data ) ) {
                // We use execScript on Internet Explorer
                // We use an anonymous function so that context is window
                // rather than jQuery in Firefox
                //可用if-else让代码更易读,这样更简洁
                ( window.execScript || function( data ) {
                    window[ "eval" ].call( window, data );
                } )( data );
            }
        }

              非:

    可利用非操作来进行布尔类型转换。如下:

       function isSortable(object){
            
           return !!object.sort;  
        }
               !!object.sort等价于Boolean(object.sort)

                

  • 相关阅读:
    成员变量、类变量、局部变量的区别
    微服务学习笔记二:Eureka服务注册发现
    微服务学习笔记一:Spring Cloud简介
    Java集合篇六:Map中key值不可重复的测试
    重写Euqals & HashCode
    Java集合篇五:HashMap
    Java集合篇四:Map的基本应用
    Java集合篇三:Vector
    Java集合篇二:LinkList
    Java集合篇一:ArrayList
  • 原文地址:https://www.cnblogs.com/etoah/p/4046574.html
Copyright © 2011-2022 走看看