4

检查字符串值时,我使用'=='。但我见过使用 '===' 的实例。例如,而不是

if("true" == "true"){
 alert('true');
}

这是使用的:

if("true" === "true"){
 alert('true');
}

这背后的原因是什么?这两个用例似乎都按预期工作。

4

4 回答 4

11

===运算符确保不仅值相等,而且要比较的两个项目也属于同一类型;而==操作员只检查两个项目的值是否相等

正如评论中提到的@amnotiam,您可能还想查看抽象平等比较算法

于 2013-03-26T19:26:10.323 回答
5
10 == '10'  // true  | check value: 10 equal 10
10 == 10    // true  | check value: 10 equal 10

10 === '10' // false | check type: int not equal string
10 === 10   // true  | check type: int equal int, check value: 10 equal 10

检查类型与否。

于 2013-03-26T19:30:42.180 回答
3

===用于检查类型的值..

var str="300";

//this gt execute
if(str==="300")
{
        alert("this alert get executed");
}


//this not execute
if(str===300)
{
        alert("this alert not get executed");    
}

对于==以下两个代码都是有效的,因为它不检查类型

//this get execute
if(str=="300")
{
        alert("this alert get executed");
}


//this get execute
if(str==300)
{
        alert("this alert get executed");
}
于 2013-03-26T19:26:23.863 回答
1

第一次检查只是逻辑测试,第二次检查是逻辑和类型测试。

== 检查一侧是否等于第二个,而 === 检查左侧是否等于第二个但来自同一类型。

if("true" == "true")

检查两者是否是相同的字符串

if("true" === "true")

检查两者是否都是相同的字符串并且都是字符串值。

另请注意,有一个 !== 运算符,它进行负值和类型比较。

于 2013-03-26T19:26:36.183 回答