JavaScript的typeof运算符
原文:The typeof
Operator in JavaScript
typeof运算符可以判断一个值的类型——number、string、object等。
typeof
运算符返回变量的类型。
1 | typeof 42; // 'number' |
一般而言:typeof
运算符返回给定的值是JavaScript的8种数据类型的哪一种。有一个很关键的例外:null
。
null
typeof
一个很容易出错的地方,就是typeof null === 'object'
。这种情况有一些历史原因,修正这一问题的提案也被否决了,目前看起来JavaScript是无法摆脱这个奇怪的语法了。
用typeof
检查一个值是否真的是对象的方法,可以判断一下它的类型是不是'object'
,它是否严格不等于null
。
1 | function isObject(v) { |
错误场景
对未定义的块级作用域变量使用typeof
运算符,会抛出错误。
1 | // 抛出错误 'ReferenceError: v is not defined' |
这个错误只会在块级作用域变量出现。例如,如果完全不定义v
变量,以上代码运行正常。
1 | console.log(typeof v); // 'undefined' |
块级变量是typeof
唯一可能报错的场景,其他场景typeof
总是可以正常运行。