美文网首页
用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