美文网首页Java 学习
js中逻辑运算符&&、||同时存在的思考

js中逻辑运算符&&、||同时存在的思考

作者: 思我恋 | 来源:发表于2019-01-09 11:30 被阅读0次

    在掘金上碰到一个有趣的问题 true || false && false这个结果是啥
    答案是true

    why?
    最初的结论是:&&的逻辑运算符的优先级高于||
    然而最后结论是短路运算的结果。

    image.png

    短路运算

    &&表达式1 && 表达式2

    表达式1 为true时,返回表达式2
    表达式1 为false时,返回表达式1,且不会执行表达式2

    ||表达式1 || 表达式2

    表达式1 为true时,返回表达式1,且不会执行表达式2
    表达式1 为false时,返回表达式2

    又去查了一堆资料,又碰到个奇怪的问题。

    true || alert(2) && false        // 结果为true,alert(2)并没有执行
    

    如果按优先级来不应该会执行alert(2)吗?

    再来个问题:

    false && false || alert(1)      // 结果弹窗1,执行了alert(1)
    

    如果按从左往右的顺序执行,短路运算生效,应该不会执行alert(1)

    经过与一位Java同事的讨论,最后得出如下结论:
    遇到||运算符,先去左边的表达式得出结果,如果结果为true,则不会去执行右边的表达式,则短路运算生效;如果结果为false,则去执行右边的表达式,再去根据两边的结果去执行||运算符

    当同时存在多个||时,从左到右,一一执行上述规则。

    相关文章

      网友评论

        本文标题:js中逻辑运算符&&、||同时存在的思考

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