编程语言
首页 > 编程语言> > javascript-这种类型的“对象”检查可以改进吗?

javascript-这种类型的“对象”检查可以改进吗?

作者:互联网

if (typeof a !== "object" && typeof b !== "object") {
    return a == b;
}
... // check pairwise equality of object a & b using `for in`

和…一样吗

if (typeof a !== "object") {
    return a == b;
}

是否有任何类型为b ===“ object”的b会改变语义?

我应该注意什么可怕的情况吗?具有非直觉布尔等式或不等式的对象和本机类型之间的比较?包括浏览器中的所有错误(我是说您是IE6!)

解决方法:

第二个检查与第一个检查不完全相同,不,仅仅是因为JavaScript的类型很弱,所以至少要考虑“ .toString()效果”以及其他检查.例如,这些将使第一次检查失败,但通过第二次检查:

var a = "[object Object]";
var b = {};

或者,更简单一些(显示您可能要考虑的情况……但这通过了两项检查):

var a = 0;
var b = "0";

一种解决方法是使用=== which is a strict comparison operator进行值和类型检查,您也将进行类型检查…但是我不完全确定这是您要执行的操作,因为当前检查明确是“不是对象” ”.

标签:equals,equality,type-coercion,javascript,typeof
来源: https://codeday.me/bug/20191208/2093454.html