instanceof否定

哪个是否定instanceof的正确格式?

if ( ! $a instanceof stdClass) 

要么

 if ( ! ($a instanceof stdClass) ) 

我已经说服了自己,后者是正确的方式,可能在几年前阅读了一篇博客文章,但经过一些命令行testing后,它们看起来都是相当的。 他们?

我们来阅读文档 :

下表按优先顺序列出了运算符,最高优先顺序排在最前面。

 Associativity Operators Additional Information ================== =============== ====================== non-associative instanceof types right ! logical 

所以instanceof具有更高的优先级,因此两个语句是等价的。 括号可能被用来使其明显,所以你不需要在文档中查找它。

他们是否等同?

是的,逻辑上它们是相等的。 ÁlvaroG. Vicario 的答案提供了更多细节的原因

哪个是否定实例的正确格式?

在这两者中,有一种观点认为以下内容更具可读性。 但是没有一个办法 。 这是PHP的美丽和诅咒。

 !($a instanceof stdClass)