年关将至,相信大家都已经在回家的路上,在中国人眼里,过了农历的春节,新的一年才算真正的开始。

2018年,如果你打算跳槽换一份工作,那么这个春节是你继续充电的好机会。近期前端君会总结一些web前端面试的经典问题,分享给大家,说不定哪天面试你就会用上了。

今天我们来讲一个比较简单但是会比较常遇到的问题。

问:使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱?

尽管 typeof bar === "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 null 也被认为是对象!

因此,令大多数开发人员惊讶的是,下面的代码将输出 true 控制台:

var bar = null;console.log(typeof bar === "object");  // logs true!

只要清楚这一点,同时检查 bar 是否为 null,就可以很容易地避免问题:

console.log(  (bar !== null)   &&   (typeof bar === "object"));  // logs 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)));

热门文章

原创教程

原创教程:

附加习题:

趣味职场

职场焦虑:

感到迷茫:

培训出身:

培训费用:

搞笑黑话:

职业自由:

职场形象:

合作推广分割线

经典面试题:用typeof来判断对象的潜在陷阱相关推荐

  1. JavaScript 用typeof来判断是否是对象的弊端

    题目:使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 1:使用typeof 首先看下面的代码: var car ...

  2. 2018最新Web前端经典面试试题及答案

    本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在网上收集的答案.马上就要过春节了,开年就是崭新的一年,相信很多的前端开发者会有一些跳槽的悸动,通过对本篇知识 ...

  3. 20道JavaScript经典面试题

    该篇文章整理了一些前端经典面试题,附带详解,涉及到JavaScript多方面知识点,满满都是干货-建议收藏阅读 前言 如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,文章公众号首发,关注 前端 ...

  4. 2023最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)

    近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k-15k的常见面试题 个人录制的最新Vue项目学习视频:B站 小胖梅-的个人空间_哔哩哔哩_Bilibili 红色为常见面试题 ====== ...

  5. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

  6. java 1.8有没有jshell_收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~...

    前言 在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github ...

  7. 收藏了800道Java后端经典面试题,共享给大家

    在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,共享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github, 希 ...

  8. 各大厂800道Java后端经典面试题合集

    前言 在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,可以私信我, 希望大家都能找到自 ...

  9. 收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~

    在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github, 希 ...

最新文章

  1. ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
  2. python使用什么来表示不同级别的语句块-python通过什么来区分不同的语句块?
  3. 条件语句练习-比分预测
  4. 计算机网络rsa算法,计算机网络安全实验新报告--非对称密码算法RSA.doc
  5. python实现二分查找算法_python实现二分查找算法
  6. 《大数据、小数据、无数据:网络世界的数据学术》一 3.4 开放学术
  7. python统计图教程_Python利用matplotlib绘制约数个数统计图示例
  8. LOJ.6435.[PKUSC2018]星际穿越(倍增)
  9. linux全过程图解图片,安装 Mandriva Linux全过程《图解》
  10. SecureCRT上传bash: rz: command not found
  11. php找不到库,64位系统下编译PHP找不到库文件问题 | 学步园
  12. 路灯干扰者路过时,路灯熄灭的照片
  13. 面空间数据中网格索引和四叉树索引的结合及优化的一种方案
  14. 网页中嵌入swf文件的几种方法
  15. KMeans 算法(一)
  16. 基于51单片机心形流水灯c语言源程序,51单片机心形流水灯源程序
  17. 装了Restorator,打开应用程序,提示不支持此接口的解决方法
  18. 安卓生成keystore文件
  19. 什么是互联网运营?运营小白应该了解的理论基础
  20. 服务器支持安装显卡吗,如何在2U服务器里装显卡

热门文章

  1. 定时跑视图往另外一张表添加数据_程序猿删库跑路示例
  2. isinstanceof java_scala中的isInstanceOf和asInstanceOf
  3. anki 插入表格_Anki之导出卡牌组到Excel文件
  4. python --version没输出_如何在Linux上安装Python
  5. oracle备份还原到本地_RMAN备份的基本操作与代码口令
  6. 界面设计方法 (1) — 2.活动功能的设计
  7. 【操作系统】竞争条件与临界区
  8. 为什么要用SSM开发框架来架构系统?
  9. Ubuntu 18.04 忘记 mysql root密码及其重置
  10. 【译】2019年开始使用Typescript