所以我知道使用JSLint语法时,您总是使用===
。在PHP中,我一直在做==
。我知道在PHP中==
的意思是"大致相同",而===
的意思则是"严格相同"。我有两个问题。
1) 在PHP中使用===
是最佳实践吗?(我知道我必须更改一些代码。)
2) Javascript中的==
和===
是否与PHP中的相同?
在PHP中,与Javascript ==
相比,==
包含了一个全新的WTF维度。例如,在PHP中,==
实际上解析字符串中的数字并进行比较,例如,在PHP中,"000" == "0"
就是true
。在false
的Javascript中因为根据字符串相等的任何合理定义,它们显然是两个不同的字符串。
一般来说,对于Javascript ==
,如果你在规范中阅读了它们的实际规则,那么它们的规则会非常简单(我仍然不会使用它,因为普通人显然不会阅读规范)。在PHP中,我总是使用===
,因为没有规范——只是比较的特殊示例。例如,我不得不阅读PHP源代码中的字符串解析。
PHP ==
字符串解析的另一个真正有趣的效果是,如果不能将字符串解析为机器整数,则只将其作为字符串进行比较。因此,根据PHP是在32位还是64位下运行,相同的等式比较可能会给出不同的结果。有趣的时光。
在PHP===中,如果您还想检查值的类型,则应该使用。如果类型不重要,那么好的做法是只使用a==。
==
和===
在javascript中的含义与在PHP中的含义相同。
在PHP中使用===
而不是==
并不一定是最佳实践,但您需要注意何时使用===
。
示例1:
<?php
$str = 'abcde';
if (strstr($str, 'a') == false {
// This line will get printed as strstr() will return the position of a
// which is 0 and 0 == false but 0 !== false so === is needed
print 'a is not in the string';
}
?>
示例2:
<?php
$a = 1;
$b = '1';
$a == $b; //true
$a === $b //false