使用 typeof bar===” object”可以确定bar是不是对象的潜在陷阱,如何避免这个陷阱?

在JavaScript中,typeof运算符返回一个字符串,表示未经计算的操作数的类型。当使用typeof bar = “object”时,确实存在一些潜在的陷阱。例如,的类型也会被typeof判断为”object”,而数组和函数(实际上也是对象)的类型被判断为”object”和”function”。

避免这个陷阱的一种方法是首先检查值是否为,然后再检查其类型。例如:

if (bar !==  && typeof bar === "object") {
  // bar 是一个非对象
}

如果你想在数组和普通对象之间进行区别,可以使用Array.isArray()函数,或者使用Object.prototype.toString.call()方法:

if (typeof bar === "object" && !Array.isArray(bar) && bar !== ) {
  // bar 是一个非数组对象
}

如果你想要排除函数,可以再加一个条件:

if (typeof bar === "object" && !Array.isArray(bar) && bar !==  && typeof bar !== 'function') {
  // bar 是一个非数组非函数对象
}

这样就可以避免这个陷阱了。

发表评论

后才能评论