美文网首页
用typeof obj ===‘object’判断obj是否是一

用typeof obj ===‘object’判断obj是否是一

作者: 默成S | 来源:发表于2018-01-03 21:43 被阅读0次
var obj = {
  name: 'Mocen'
}
    
function output(obj) {
  if (typeof obj === 'object') {
    console.log(obj.name);
  } else {
    console.log('obj is not a object');
  }
}
output(obj);

上面这段代码有没有问题,如果有的话应该如何改进?


错误点:
typeof在检测到null时也会显示为object,但在javascript中null并非对象,因此需要增加一个检测null的模块:
if (typeof obj === 'object' && obj !== null) ;
修改后的代码如下:

var obj = {
  name: 'xiaoming'
}
function output(obj) {
  if (!obj && typeof obj === 'object') {
    console.log(obj.name);
  } else {
    console.log('obj is not a object');
  }
}
output(obj);

犀牛书44页,第三章3.4中是这样描述的:

对null执行typeof预算,结果返回字符串'object',也就是说,可以将null认为是一个特殊的对象值,含义是“非对象。”

附上一篇阮一峰的文章作为补充:http://www.ruanyifeng.com/blog/2011/05/how_to_judge_the_existence_of_a_global_object_in_javascript.html

相关文章

网友评论

      本文标题:用typeof obj ===‘object’判断obj是否是一

      本文链接:https://www.haomeiwen.com/subject/givknxtx.html