JavaScript – 相等(==)与身份(===)运算符
JavaScript – 相等(==
)与身份(===
)运算符
如果您使用过 JavaScript,那么您一定已经注意到这两个运算符可以比较值。 许多开发人员不了解他们在特定情况下使用的正确版本。 正确的决定是基于对它们实际工作原理的了解。 让我们来了解一下。
请记住,在执行比较时,相等运算符(==
)将在继续进行操作之前尝试使数据类型相同。 另一方面,身份运算符(===
)要求两种数据类型相同,作为前提条件。
让我们看一个例子。 参见下面的代码:
var valueOne = 3;
var valueTwo = "3";
if (valueOne == valueTwo) {
console.log("ValueOne and ValueTwo are the same");
} else {
console.log("ValueOne and ValueTwo are NOT the same");
}
你能猜出输出吗? 您可能会感到惊讶,也可能不会感到惊讶,但是这些值被认为是相同的。
Output is: ValueOne and ValueTwo are the same
==
运算符之所以认为"3"
和3
相同,是因为在进行比较之前,它实际上将操作数(==
运算符两侧的值)覆盖为相同的类型。
但是,如果我们将运算符更改为身份运算符,如此处所示,我们将看到截然不同的输出:
var valueOne = 3;
var valueTwo = "3";
if (valueOne === valueTwo) {
console.log("ValueOne and ValueTwo are the same");
} else {
console.log("ValueOne and ValueTwo are NOT the same");
}
现在有了身份运算符,输出为:
Output is: ValueOne and ValueTwo are NOT the same
由于我们在这种情况下使用了===
运算符,并且由于该运算符未执行任何类型转换,因此我们看到字符串值"3"
和数字3
毕竟是不同的。
如有疑问,相对安全的选择只是出于习惯而使用身份运算符(===
)。 当然,最安全的选择是使自己熟悉这些差异,以便您了解引擎盖下实际发生的事情。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果