Js中的且(&&)和或(||)

156 阅读1分钟

需求分析:开发中展示考生的分数(区间:[0,100]),该字段返回可能为null。于是写了下边的代码(react框架):

     {totalScore && <span>总分:{totalScore}</span>}

分数为非零时均可以正常展示,如:总分:23。当分数为0时候只返回一个0。“总分:”消失了?

且(与)预算: 当遇到第一个值为false时,会停止后面判断,并返回当前的当前值:

      const firstFalse = 0 && 'a' && 2
      console.log("firstFalse:",firstFalse) // 0
      const secondFalse = 2 && null && 3
      console.log("secondFalse:",secondFalse) // null
      const thirdFalse = 2 && '1' && '' && 2
      console.log("thirdFalse:",thirdFalse) // ''

5a778ef5eb7cae6fa2c86d0db0d4fc2.png

当全部为true的时候则会默认返回最后一个值:

        const  allTrue = 3 && '23' && true && true
        console.log("allTrue:", allTrue) // 'true'

9ec91c4145e881c39a3c67b3f73e2a4.png

或运算,与且预算相反: 当遇到第一个为true的值则返回当前值,否则一直向后判断,如果最后这个值也为false,则默认返回最后一个值:

        const secondTrue = null || true || 'jajajaj'
        console.log("secondTrue:", secondTrue) // 'true'
        const AllFalse = null || '' || undefined
        console.log("AllFalse:", AllFalse) // 'undefined'

f4b66b56c41ee6f7df6f3787ab74a7e.png

上边的问题也就迎刃而解了,开发中会发现好多的bug都源于我们以为。哈哈哈...