获得徽章 0
- 我是《Spring Cloud微服务实战》作者--程序猿DD,你有什么问题想要问我?
大家好,我是DD,一名长期作战在一线的程序员。写代码是我每天坚持并且热衷的事,除此之外对于技术的研究与分享是我业余的最大爱好之一。对于技术分享这件事,从大学开始就有开始,但是一直都没有很坚持,直到 2016 年,我才开始搭建了我的独立博客,并开始坚持写文,从 Spring Boot 系列文章,到国内最早的 Spring Cloud 系列教程。在这个写博分享的过程中,不仅让我的知识更加体系化,也让我结识了非常多优秀的同行,在交流的过程中不断补充着自身对各种技术认识的场景盲点,不断丰满对各种技术的认识。
在来掘金与大家交流的这一刻,我的独立博客(blog.didispace.com)也达到了 1000万访问的大关。在这个过程中,除了自我技术的提升之外,在博客的经营上也踩了很多的坑,积累了不少的心得。欢迎关注我的公众号(图2)获得最新知识。
在这里,大家除了「Spring」相关的技术问题之外,我也可以跟大家交流一些「写博相关的经验」,「个人成长」,「职业规划」,「业余生活」等问题。我会在 2019.05.28 - 2019.05.30 期间选择有趣/ 有意义/ 有影响力的问题回复。展开6160 - 「每天一点点🕐」【优先级与求值顺序无关】
🌰例子:true || true && fn() 这个表达式的值是多少,函数fn 会被执行吗?
❓看到上述表达式,第一反应是 “逻辑或||” 是短路操作符,因此答案是true,且 函数fn 不会被执行;如果混合了奇怪的概念,比方说 “逻辑与&&” 优先级高于 “逻辑或||”,应该先执行 true && fn(),所以会执行 函数fn,那么事情就变得奇怪了。
📚“逻辑与&&”、“逻辑或||” 都是短路操作符,“逻辑与&&” 优先级高于 “逻辑或||”,这两个概念都是正确的。但是优先级高不代表优先运算。优先级是结合的优先级,即谁和谁一组;组了队不代表优先运算,运算顺序还是按照从左到右来的,因此上述表达式等同于 true || ( true && fn() )
关于短路操作符:
“逻辑与&&”、“逻辑或||”都是短路操作符。当“逻辑或||”左边的值是 true 的时候,就会直接返回结果 true,后续代码不会被执行;当“逻辑与&&”左边的值是 false 的时候,就会直接返回结果 false,后续代码不会被执行。展开743