• javascript中逻辑运算符总结


    1.逻辑与   &&

     1)  返回值为数值:
    true && true = (第二个值)
    true && false = (第二个值)
    false && true = (第一个值)
    false && false = (第一个值)
            console.log(3 && 0);      //0
            console.log(3 && 4);    //4
            console.log(0 && 4);    //0
            console.log(0 && "");    //0
    2)返回值为布尔值:
     var a=2,b=5;
     console.log(2>0 && 5<10)    //true
     console.log(a>0 && b<10)    //true
    console.log(a>0 && “5”) //5

    总结:

    1)若逻辑与的两边是判断,则返回boolean值

    2)若逻辑与的两边是数值,则返回对应number值

    3)若逻辑与一边是判断,一边是数值,则返回数值

    2.逻辑或    ||

    true || true = (第一个值)
    true || false = (第一个值)
    false || true = (第二个值)
    false || false = (第二个值)
           代码验证过程如上面的逻辑与。
     
    应用:在实际的项目中,我们经常用逻辑或来给变量赋值。例如:
                var obj;
                obj= obj || {};
    
    
                if(!obj){
                    obj={};    
                }

    这两种方法的功能是一样的,但是第一种是不是看起来要简单,并且高大上一些呢。在来个例子:

            bn.onclick=function(e){
                e=e || window.event;
    
             }
             bn.onclick=function(e){
                if(!e){
                    e=window.event;
                }
             }

    可以很明显的感觉到第一种方法要比较好。

    我们常常用这种方法来写单例模式,例如:

          class Box{
                static _instance;
                static getInstance(){
                    return Box._instance || (Box._instance=new Box());
                }
            }

    3.逻辑非    !

     !  取逻辑反,先隐式转换布尔值,然后取反. 
     console.log(![]==false);
     console.log(![]===false);         结果:true   true  

    解释:对象不能转换为字符串,console.log(String(obj(a:1,b:2)))--->[object,Object],数组可以转换为字符串,console.log(String([1,2,3]))--->1,2,3,

    空数组[]--->"",  ""==false==0   所以[]==false;   如果是这样的话,那么上面的运行的结果就是错的。到底是怎么回事呢?

    “ !  取逻辑反,先隐式转换布尔值,然后取反”,这句话很重要,在前面我总结的,只有空字符(""),0,false,undefined,null,NAN是false,其余的都是true,所以[]先隐式转换为true,然后![]===false

     常用逻辑非来写开关,例如:

         var bool=false;
            var bn=document.getElementById("bn");
            bn.onclick=function(){
                bool=!bool;//取反运算
                bn.innerHTML=bool ? "开" : "关";
            }
  • 相关阅读:
    手贱!使用django,在数据库直接删除了表
    js中在一个函数中引用另一个函数中的函数,可以这么做
    上传下载文件方式
    阻止form提交数据,通过ajax等上传数据
    一种思路,隐藏input标签,通过label关联
    java 寻找水仙花数
    java 统计素数个数问题
    java 兔子生仔问题
    java 实现读取某个目录下指定类型的文件
    通过java 来实现对多个文件的内容合并到一个文件中
  • 原文地址:https://www.cnblogs.com/94-Lucky/p/13155357.html
Copyright © 2020-2023  润新知