基本数据类型在 typeof 中的表现

《前端面试之 Javascript 数据类型和内置对象》一文中,我们知道算上 BigInt 的话,目前 Javascript 有七种基本数据类型,它们在使用 typeof 关键字时的表现如下:

typeof undefined // "undefined"
typeof true // "boolean"
typeof 42 // "number"
typeof "42" // "string"
typeof { life: 42 } // "object"
typeof Symbol() // "symbol"
typeof BigInt(12232332423213) // "bigint"
typeof null // "object"

会发现,typeof 对 null 的处理比较特殊,这是一个 JavaScript 语言 bug,正确的返回结果应该是 "null"

如果想要判断一个变量是否是 null ,很显然 typeof 的方式行不通,可以通过下面的方式判断:

var a = null
(!a && typeof a === "object") // true

还有一种情况:

typeof function a (){ /* .. */ } === "function" // true

表面上看,function 也是 JavaScript 的一个内置类型,但实际上是 object 的一个“子类型”

具体来说,函数是“可调用对象”,它有一个内部属性 [[Call]],该属性使其可以被调用

除特殊说明外本人博客均属原创,转载请注明出处:http://blog.johnhan.cn/blog_1076.html
京ICP备19044523号-1