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