37个JavaScript基本面试问题和解答
1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免? 尽管typeof bar ===“object”是检查bar是否是对象的可靠方法,但JavaScript中令人惊讶的问题是_null_也被认为是一个对象! 因此,下面的代码打印到控制台的是true而不是false: var bar = null; console.log(typeof bar === "object"); // logs true! 只要知道这一点,就可以通过检查bar是否为空来轻松避免该问题: console.log((bar !== null) && (typeof bar === "object")); // logs false 为了在我们的答案更加的完整,还有两件事值得注意: 首先,如果bar是一个函数,上面的解决方案将返回false。在大多数情况下,这是所期望的行为,但是在您希望函数返回true的情况下,您可以将上述解决方案修改为: console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function"))); 其次,如果bar是数组,则上述解决方案将返回true(例如,如果var bar = [];)。在大多数情况下,这是所希望的行为