美文网首页
第3章:js 逻辑‘与和或’的笔记

第3章:js 逻辑‘与和或’的笔记

作者: 大香蕉s | 来源:发表于2016-12-19 23:55 被阅读0次

    逻辑‘与和或’操作

    1. js 中的逻辑‘与和或’操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。
    • 逻辑与 为例, 第一操作数为false,则返回 false,不执行第二个操作数(即使第二个操作数 有错误)
        var a = false
        var result = (a && someUndefinedVar)   //  没有发生错误,因为 someUndefinedVar 没有执行
        var b = true
        var result = (b && someUndefinedVar)   //  发生错误:  someUndefinedVar is no defined
    
    • 同理对于 逻辑或, 第一操作数为true,则返回 true,不执行第二个操作数(即使第二个操作数 有错误)
      <br >
    1. 逻辑‘与和或’操作可以适用于任何类型的操作数,而不仅仅是布尔值。
      ** 在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值 **
        // 以 逻辑与 为例 
       var obj1 = {
           a: 'b'
       }
       var c = 'Halo'
    
       var r1 = obj1 && c 
       console.log(r1)  // r1 = c ,因为 obj1 转换为布尔值为 true, 则接着执行第二个操作数,结果返回第二个操作数
    
       var t = true
       var r2 = t && obj 
       console.log(r2) // r2 = obj1 ,根据笔记 2 返回 obj1
    
       var obj2 = {
           d: 'e'
       }
       var r3 = obj1 && obj2
       console.log(r3) // r3 = obj2, 因为 obj1 转换为布尔值为 true,接着执行第二个操作数,返回 obj2
    

    <br >

    1. 逻辑 **‘与’ ** 中的某一操作数为 null undefined NaN,则对应返回 null undefined NaN
    • 若 逻辑操作 中既有 null 也有 NaN, 则根据短路操作先遇到谁就返回谁
    // 例
    var r = null  && undefined
    console.log(r) // r = null, 因为先遇到 null ,由于短路操作,第二操作数不执行,直接返回 null
    

    <br >

    1. 逻辑 ‘或’ ** 中的两个操作数都**为 null undefined NaN,才返回 null undefined NaN
    • 若 逻辑操作 中既有 null 也有 NaN, 则根据**笔记 2 **返回第二个操作数
    // 例
    var r = null  || undefined
    console.log(r) // r = undefined, 因为先遇到 null ,null 转化为布尔值为 false,所以接着执行第二操作数,根据笔记 2 返回第二操作数
    

    <br >

    相关文章

      网友评论

          本文标题:第3章:js 逻辑‘与和或’的笔记

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