JavaScript比较运算符:Identity与Equality

我一直在努力理解JavaScript的比较运算符之间的区别:身份和平等.根据我的阅读,如果使用==检查两个对象的相等性,JavaScript将尝试确定它们是否是相同类型,如果不是,则尝试将它们设置为相同类型.但是,===的行为方式不同.举个例子:

var n = "1";
console.log(n==1);        // outputs true
console.log(n===1);       // outputs false

那么这些“身份”操作符和正规平等操作符之间的区别是什么?两者兼有的好处是什么?

性能有差异吗?我认为身份运算符会更快,因为它不会进行转换.

另外,当涉及更复杂的对象(如数组)时,它们有何不同?最重要的是,公约会说什么时候应该使用另一个,为什么?

解决方法:

在进行比较之前,相等运算符将尝试使数据类型相同.另一方面,身份运算符要求两种数据类型都与先决条件相同.

还有很多其他帖子类似于这个问题.看到:

How do the PHP equality (== double equals) and identity (=== triple equals) comparison operators differ?(有一个很好的对比图表)
Which equals operator (== vs ===) should be used in JavaScript comparisons?

在实践中,当您想要确定布尔值为true或false时,身份运算符非常方便,因为……

1 == true     => true
true == true  => true
1 === true    => false
true === true => true
上一篇:如何在python中重新定义=?


下一篇:Java和python ^运算符