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

在掘金上碰到一个有趣的问题 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,则去执行右边的表达式,再去根据两边的结果去执行||运算符

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    许先生__阅读 631评论 0 3
  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,本章逐一介绍这些运算...
    徵羽kid阅读 731评论 0 0
  • 前言: 最近在学习javascript中数据类型、运算符,以及运算符优先级等相关基础知识,相对简单、基础但也很重要...
    饥人谷_远方阅读 804评论 0 3
  • 算术运算符 JavaScript 共提供10个算术运算符,用来完成基本的算术运算。 加法运算符:x + y 减法运...
    guyigg阅读 1,266评论 0 1
  • 老舍原名舒庆春,字舍予。1899年生于北京,满族人。1918年北京师范学院毕业。1930年七月老舍应聘到...
    小青杏阅读 295评论 0 0