何时使用===运算符检查JavaScript?

问题描述:

可能重复:
Javascript === vs == : Does it matter which “equal” operator I use?何时使用===运算符检查JavaScript?

正如标题状态;什么时候应该在使用JavaScript时使用===运算符检查,何时不使用。

编辑:更多的完整答案发现here。感谢Mark Byers指出。

_L

+0

是的 - 我会链接到它 – ptrn 2010-05-22 06:50:11

它是严格的类型相等运算符。它不仅检查两个是否在相等,而且也是相同的类型

考虑一个情况,当你比较数字或字符串:

if (4 === 4) // same value and type 
{ 
    // true 
} 

if (4 == "4") // same value and different type but == used 
{ 
    // true 
} 

if (4 === "4") // same value but different type 
{ 
    // false 
} 

这适用于对象和数组。

因此,在上述情况下,你必须做出明智的选择是否使用=====

这是好主意,用===当你不确定类型以及

+0

感谢您的快速和彻底的答案 - 将在15分钟后通过设置为答案 – ptrn 2010-05-22 06:32:22

+0

@ptrn:欢迎您:) – Sarfraz 2010-05-22 06:36:26

当您希望抑制隐含的类型转换时。例如:

3 == '3' 

true,而这不是:

3 === '3' 

道格拉斯Crockford的建议始终使用严格比较。

+0

说实话,当有人说“ALWAYS”做xxx时,我总是有点可疑。我可以看到将数字与字符串进行比较的情况。显然,你可以手动将字符串转换为数字,但如果JS能为你做,为什么要麻烦? :) – nico 2010-05-22 06:41:20

+2

@ nico,同意,有些情况下你根本不需要它,一个常见的情况是当你想在一步中比较'null'和'undefined',if(foo == null)做这个工作,或者当使用'typeof'运算符时,你也不需要它,因为它总是会*返回一个字符串...'if(typeof foo ==“undefined”)'就足够了...... – CMS 2010-05-22 06:47:36

您可以使用它来检查如果一个变量的值和类型与被比较的值相同。