When would JavaScript == make more sense than ===?
正如在JavaScript比较中应该使用哪个equals运算符(=vs==)?表示它们基本相同,除了"EDOCX1"(0)还确保类型相等,因此"EDOCX1"(1)可能执行类型转换。在DouglasCrockford的javascript:好的部分中,建议始终避免"
你有没有见过使用"EDOCX1"(1)实际上比使用"EDOCX1"(0)更合适的情况?
考虑比较数字或字符串时的情况:
1 2 3 4 | if (4 === 4) { // true } |
但是
1 2 3 4 | if (4 =="4") { // true } |
和
1 2 3 4 | if (4 ==="4") { // false } |
这适用于对象和数组。
因此,在上面的情况下,您必须做出明智的选择,是否使用==或===
简单的答案是,当您希望在比较过程中发生类型强制时,"=="比"=="更有意义。
一个很好的例子是在URL查询字符串中传递数字。例如,如果您有分页内容,并且
我建议使用
1 | if (vble === 0 || vble ==="" || vble === null || vble === undefined || vble === false) ... |
写起来容易多了
1 | if (vble == false) ... |
(或者更容易写)
如果(!)VBLE)
当然,除了寻找"真实"或"虚假"的价值观,还有更多的例子。
实际上,你只需要了解何时以及为什么使用
另一个示例是使用此速记来允许速记方法调用:
1 2 3 4 5 6 7 8 | function func(boolOptionNotCommonlyUsed) { if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true //do something we rarely do } //do whatever func usually does } func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without"false" as an arg |
==比较两个边的值是否相同。
===比较两边的值和数据类型是否相同。
说我们有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $var = 0; if($var == false){ // true because 0 is also read as false } if(!$var){ // true because 0 is also read as false } if($var === false){ // false because 0 is not the same datatype as false. (int vs bool) } if($var !== false){ // true becuase 0 is not the same datatype as false. (int vs bool) } if($var === 0){ // true, the value and datatype are the same. } |
您可以查看http://www.jonlee.ca/the-triple-equals-in-php/