变量===值和值===变量之间的差异


Difference between variable === value and value === variable?

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检查变量的值和类型,两个方法的错误应该不同。