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总是可以正常运行。