第二十五关:照妖镜 2.0

任务目标:深入理解 typeof 的奇葩之处

🦸‍♂️

JS 队长

我们之前见过 typeof,它可以告诉我们数据的类型。

typeof "John" -> string

typeof 3.14 -> number

🐛 JS 的历史遗留 Bug

🐛

巴格

嘿嘿,JS 也是有 Bug 的!不信你试试 typeof null (空值)?

typeof null // 结果竟然是 "object" (对象) ???

JS 队长

哎,这是一段悲伤的往事。这是 JS 第一个版本就存在的 Bug,为了兼容性,我们永远不能修复它了。

记住:null 是基本类型,但 typeof 说它是 object。 这是一个美丽的谎言。

🦸‍♂️

📦 数组也是对象

typeof [1, 2, 3] 的结果也是 "object"

如果你想真正检测一个东西是不是数组,要用 Array.isArray()

🎮 鉴宝大会

请判断下列代码的输出结果:

typeof undefined
typeof NaN (Not a Number)
typeof null