a(
if(null === $object)
{
//take some action
}
b(
if($object === null)
{
//take some action
}
我有这样做的习惯,但在Zend Framework中,我发现他们到处都像a(一样做。它有什么好处吗??
谢谢。
没有,没有区别。
当您编写$a = null
而不是$a == null
(或$a === null
(时,后者应该有助于避免愚蠢的拼写错误。在第一种情况下,由于赋值而不是比较,您将得到逻辑错误;在第二种情况下——您将得到致命错误,这将帮助您更快地发现问题。
没有区别,它是用来避免错误的(比如将变量设置为null
,而不是比较它们(,然而null === $object
通常被认为是避免拼写错误的坏方法(c(。
$object === null
表达式比null === $object
更人性化,因为第二个表达式打破了从左到右的自然阅读顺序。这就是为什么即使口译员没有太大区别,但人类阅读起来有点困难。涉及一些逻辑——如果你使用if.else语句,它听起来应该是什么样子?"如果null
等于$object
。等一下,null
就是null
,它怎么会等于其他东西?哦,天哪,我们实际上把右手值和左手值进行了比较,这是相反的东西。所以,如果$object
等于null
,那么我们应该……"。你每次都这样想。
我的结论是:尽可能使用$value == const
!很久以前人们写if ($value = const)
,但这些时代已经过去了。现在,每个IDE都可以告诉您这些简单的错误。
b(比a(可读性更强
并且a(被一些过于谨慎的人认为不太容易出错,因为可能混淆==
和=
但如果是三个=,我怀疑有人会把它和一个混淆。
这是开发人员尝试停止意外赋值的选择。
这两种比较方法的功能完全相同,但在"a"的情况下,它会停止任何意外的值赋值,因为您不能将某个值赋值为null。
第二个方法根据null
检查变量的值和类型,两个方法的错误应该不同。