在javascript中,a===两个';相等';字符串返回false?

在javascript中,a===两个';相等';字符串返回false?,javascript,Javascript,以下两项中的每一项都包含相同的字符串值,但使用“==”进行比较时返回false (hiddenColumns[hidenColsIndex] === cells[metricColsIndex].columnName) 使用“==”进行的比较返回true (hiddenColumns[hidenColsIndex] == cells[metricColsIndex].columnName) 为什么?您没有比较同一类型的两个对象。其中一个值(或两者)不是字符串。==表示比较值和数据类型 当您要

以下两项中的每一项都包含相同的字符串值,但使用“==”进行比较时返回false

(hiddenColumns[hidenColsIndex] === cells[metricColsIndex].columnName)
使用“==”进行的比较返回true

(hiddenColumns[hidenColsIndex] == cells[metricColsIndex].columnName)

为什么?

您没有比较同一类型的两个对象。其中一个值(或两者)不是字符串。

==表示比较值和数据类型

当您要比较两个元素的值及其数据类型时,==应为false

在您的例子中,第一个语句是false,因为它们是两种不同的数据类型
在第二种情况下,该语句为true,因为值相同(考虑比较两个普通对象)

如果
=
比较返回
false
,则它们不是相同的字符串值。也许一个是数字,另一个是该数字的字符串版本。我们需要更多关于这方面的信息。您可以使用JSON.stringify检查并向我们显示这些字符串。triple equal运算符意味着不仅值必须相等,而且它们的类型也必须相等。在这两个方面都做
typeof()
,看看你得到了什么。可能有意思:你确实是对的。当Visual Studio调试器报告在监视窗口中两者都是“String”类型时,typeof()显示一个是对象,另一个是字符串。好电话。这里有一个链接,讨论文本字符串和字符串对象之间的区别[link]
//a and b are equal in data but not equal in type
var a = 1;
var b = "1";

//== will return true
if (a == b)
{
    console.log("true");
}
else
{
    console.log("false");
};

//=== will return false
if (a === b)
{
    console.log("true");
}
else
{
    console.log("false");
};