== vs === in Javascript


== vs === in Javascript

所以我知道使用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