站长手册

您现在的位置是:首页 > javascript面试题 > 正文

javascript面试题

使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?

ghjk2020-07-27javascript面试题21
使用typeof的弊端是显而易见的(这种弊端同使用instanceof):letobj={};letarr=[];console.log(typeofobj==='ob

使用 typeof 的弊端是显而易见的(这种弊端同使用 instanceof):


let obj = {};

let arr = [];


console.log(typeof obj === 'object');  //true

console.log(typeof arr === 'object');  //true

console.log(typeof null === 'object');  //true

从上面的输出结果可知,typeof bar === "object" 并不能准确判断 bar 就是一个 Object。可以通过 Object.prototype.toString.call(bar) === "[object Object]" 来避免这种弊端:


let obj = {};

let arr = [];


console.log(Object.prototype.toString.call(obj));  //[object Object]

console.log(Object.prototype.toString.call(arr));  //[object Array]

console.log(Object.prototype.toString.call(null));  //[object Null]

另外,为了珍爱生命,请远离 ==:

珍爱生命


而 [] === false 是返回 false 的。

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~