前端之路——JS中的typeof
2019-04-19 本文已影响39人
三点水滴
typeof的作用
typeof的作用是用来确定值的类型,返回值的类型为字符串。对于不同类型的值,返回值如下:
typeof 'foo' // "string"
typeof 1 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof {} // "object"
//*********特殊的结果*********
typeof null // "object"
function foo() {}
typeof foo // "function"
typeof [] // "object"
需要注意的是
-
typeof null
的结果是"object"
,而不是"null"
-
typeof <函数名>
的结果是"function"
,而不是"object"
-
typeof []
的结果是"object"
,而不是"array"
typeof的安全防范机制
先明确undefined
与not defined
,前者表示没有值,后者表示未定义。在浏览器中这两种类型的错误信息如下:
var a
console.log(a.foo) // "undefined"(字符串,不是报错)
console.log(a.foo) // Uncaught TypeError: Cannot read property 'foo' of undefined
console.log(b) // Uncaught ReferenceError: b is not defined
//************使用typeof************
typeof a // "undefined"
typeof b // "undefined"
也就是说,直接使用 undefined
的值,不会报错,但是调用其属性或者方法会报错;而直接使用 not defined
的值,会立即报错。然而,对not defined
的值使用 typeof
不会报错,而是返回 "undefined"
,这就提供了一个检测某个变量是否已经声明的工具,这在使用第三方库或者浏览器兼容时会很有用。