美文网首页
JS深入理解&&和||

JS深入理解&&和||

作者: 柏野野 | 来源:发表于2017-04-12 22:03 被阅读34次

    先从两个问题看起:

    第一个:

    第二个:

    从三个层次来理解(以&&为例说明):

    第一层理解:操作数都是布尔值的时候,只有二者都为true的时候,结果才为true,否则为false。

    第二层理解:&&可以对真值和假值进行运算,如果两个都是真值,则返回一个真值,否则返回一个假值。但是,真值并不仅限于true,假值也并不仅限于false,下面这些值会被转换成false(其他所有值都为true)

    undefined

    null

    0/-0

    NaN

    " "

    在js中,进行&&操作,结果并不总是true和false,而是当前的值。当前的值有可能就是数值、字符串等。

    如果第一个表达式为真,那么就以第二个表达式的值作为其结果,这个结果不是转换之后的值,而是它本身。

    如果第一个表达式为假,那么就以第一个表达式的值作为其结果,这个结果不是转换之后的值,而是它本身。

    第三层理解:短路运算,运算过程,首先计算左操作数的值,如果计算结果为假值,则整个表达式结果就为假值,也就是左操作数的值。同时停止右操作数的求值。如果左操作数的结果为真值,则整个结果依赖于右操作数的值。

    关于短路运算的说明:

    在&&和||运算时,如果第一个表达式的值就已经能够确定整个运算的结果,那么第二个表达式将不会执行

    或和与具有完全相同的原理,只是运算规则不太一样。

    对于||而言,

    如果第一个表达式的值为真值,结果就是第一个表达式的值,不是转换之后的,而是它本身。

    如果第一个表达式的值为假值,结果就是第二个表达式的值,不是转换之后的,而是它本身。


    相关文章

      网友评论

          本文标题:JS深入理解&&和||

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