美文网首页
|| 和 && 操作符

|| 和 && 操作符

作者: 未路过 | 来源:发表于2022-08-24 09:36 被阅读0次

    1. 逻辑或的本质

    image.png
    
    
        // 脱离分支语句, 单独使用逻辑或
    
        /*
    
          1.先将运算元转成Boolean类型
    
          2.对转成的boolean类型进行判断
    
            * 如果为true, 直接将结果(原始值)返回,不是返回true或者返回false,
    
               比如第一个运算元是why,字符串,转换为布尔
    
               是true,但是返回的时候,返回的是why,而不是true
    
            * 如果为false, 进行第二个运算元的判断
    
            * 以此类推
    
          3.如果找到最后, 也没有找到, 那么返回最后一个运算元
    
        */
    
        // var name = "why"
    
    // name || 运算元2 || 运算元3
    
       var chineseScore = 95
    
       var mathScore = 99
    
       var test = chineseScore  || mathScore
    
       console.log(test)//95
    
        // 本质推导一: 之前的多条件是如何进行判断的
    
        var chineseScore = 95
    
        var mathScore = 99
    
        // chineseScore > 90为true, 那么后续的条件都不会进行判断
    
        if (chineseScore > 90 || mathScore > 90) {}
    
        // 本质推导二: 获取第一个有值的结果
    
        var info = "abc"
    
        var obj = {name: "why"}
    
        var message = info || obj || "我是默认值"
    
        console.log(message)//'abc' 0,nan,空字符串,null undifiend==>false
    
        console.log(message.length)
    
        function foo(name){
    
          //调用的时候希望别人给你传个参数,但是调用的时候没有传的时候,name是undifned,后面再用的时候
    
          //会报错,比如打印name.length的时候,undified没有length属性,就会报错。
    
          //这个时候就要用逻辑或,给他一个默认值
    
          var message = name || "我是默认值"
    
        }
    
        foo()
    

    2. 逻辑与的本质

    image.png
        // 运算元1 && 运算元2 && 运算元3
    
        /*
    
          也可以脱离条件判断来使用
    
          逻辑与的本质
    
           1.拿到第一个运算元, 将运算元转成Boolean类型
    
           2.对运算元的Boolean类型进行判断
    
             * 如果false, 返回运算元(原始值)
    
             * 如果true, 查找下一个继续来运算
    
             * 以此类推
    
           3.如果查找了所有的都为true, 那么返回最后一个运算元(原始值)
    
        */
    
        // 本质推导一: 逻辑与, 称之为短路与
    
        var chineseScore = 80
    
        var mathScore = 99
    
        if (chineseScore > 90 && mathScore > 90) {}
    
        // 本质推导二: 对一些对象中的方法进行有值判断
    
        var obj = {
    
          name: "why",
    
          friend: {
    
            name: "kobe",
    
            eating: function() {
    
              console.log("eat something")
    
            }
    
          }
    
        }
    
        // 调用eating函数
    
        // obj.friend.eating()
    
        //如果obj里面没有friend这个属性的化,调用obj.friend.eating()会报错
    
        obj && obj.friend && obj.friend.eating && obj.friend.eating()
    
    

    || 和 && 返回它们其中一个操作数的值,而非条件判断的结果

    3.逻辑非的本质

    image.png
    
    var message = "Hello World"
    
    //想把这个message转换成布尔类型,有以下两种方法
    
    console.log(Boolean(message))//true
    
    console.log(!!message)//true
    
     var obj = null
    
    console.log(Boolean(obj))//false
    
    console.log(!!obj)//false
    

    非常感谢王红元老师的(前端基础公开课-学习视频教程-腾讯课堂 (qq.com)
    )让我学习到很多前端的知识

    相关文章

      网友评论

          本文标题:|| 和 && 操作符

          本文链接:https://www.haomeiwen.com/subject/dfxggrtx.html