《JavaScript经典面试题》第1道:用typeof来判断对象的潜在陷阱

 微信公众号:javafirst

近期总结一些web前端面试的经典问题,分享给大家,说不定哪天面试你就会用上了。

今天我们来讲一个比较简单但是会比较常遇到的问题。

问:使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱?

尽管 typeof bar === "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 null 也被认为是对象!

因此,令大多数开发人员惊讶的是,下面的代码将输出 true 控制台:

只要清楚这一点,同时检查 bar 是否为 null,就可以很容易地避免问题:

要答全问题,还有其他两件事情值得注意:

首先,上述解决方案将返回 false,当 bar 是一个函数的时候。在大多数情况下,这是期望行为,但当你也想对函数返回 true 的话,你可以修改上面的解决方案为:

第二,上述解决方案将返回 true,当 bar 是一个数组(例如,当 var bar = [];)的时候。

在大多数情况下,这是期望行为,因为数组是真正的对象,但当你也想对数组返回 false 时,你可以修改上面的解决方案为:



更多资源扫一扫免费获取

猜你喜欢

转载自blog.csdn.net/xiamiflying/article/details/80910739