今天看HDWiki的源代码,发现所有核心代码的头部都有这么一行:
感觉很奇怪,一般应该写为:
才对。难道&&操作符也有判断的意思吗?
带着这个问题,我开始测试,当我把exit("Access Denied!") 和 !defined("IN_HDWIKI")换位置以后,就总是提示Access Denied。原来这是利用了&&操作符先从左侧开始检查的原理,如果左侧为true,才会检查右侧的值,如果左侧为false,不执行右侧的代码,直接就往下走了。
当IN_HDWIKI已经被定义过的时候,!defined("IN_HDWIKI") 必定为false ,所以页面会继续执行,而不检查右侧。反之,编译器会执行右侧代码。
但是除了一个占1行,一个占3行以外,这两种判断语句的效率有什么区别吗?