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