最新文章:

您的位置: 富录-前端开发|web技术博客 > 前端面试题汇总 > 前端面试题(七)

前端面试题(七)

发布时间:2019年07月28日 评论数:抢沙发阅读数: 4869

    使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱?
    尽管 typeof bar === "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 null 也被认为是对象!
    因此,令大多数开发人员惊讶的是,下面的代码将控制台输出 true :
    var bar = null;
    console.log(typeof bar === "object");  // true
    只要清楚这一点,同时检查 bar 是否为 null,就可以很容易地避免问题:
    console.log((bar !== null) &&  (typeof bar === "object"));  // false
    要答全问题,还有其他两件事情值得注意:
    首先,上述解决方案将返回 false,当 bar 是一个函数的时候。在大多数情况下,这是期望行为,但当你也想对函数返回 true 的话,你可以修改上面的解决方案为:
    console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function")));
    第二,上述解决方案将返回 true,当 bar 是一个数组(例如,当 var bar = [];)的时候。
    在大多数情况下,这是期望行为,因为数组是真正的对象,但当你也想对数组返回 false 时,你可以修改上面的解决方案为:
    console.log((bar !== null) && (typeof bar === "object") &&  (toString.call(bar) !== "[object Array]"));
    或者,如果你使用jQuery的话:
    console.log((bar !== null) && (typeof bar === "object") && (! $.isArray(bar)));


二维码加载中...
本文作者:DGF      文章标题: 前端面试题(七)
本文地址: https://arbays.com/post-129.html     本文已被百度收录!
版权声明:若无注明,本文皆为“富录-前端开发|web技术博客”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论