typeof 能准确识别 string、number、boolean、undefined、function、symbol、bigint 七种类型,但对 null 返回 "object",且无法区分对象、数组、日期等具体类型,需结合 Object.prototype.toString.call 等方法精准判断。

typeof 是 JavaScript 中用于检测值的数据类型的运算符,它返回一个表示类型名称的字符串,比如 "string"、"number"、"function" 等。
typeof 能识别哪些类型?
它对大部分基本类型判断准确:
-
typeof "hello"→"string" -
typeof 42→"number" -
typeof true→"boolean" -
typeof undefined→"undefined" -
typeof function(){}→"function" -
typeof Symbol("a")→"symbol" -
typeof BigInt(123)→"bigint"
typeof 的主要局限性
它在几个关键场景下表现不可靠:
-
null 返回 "object":这是历史遗留 bug,
typeof null结果是"object",而非预期的"null" -
对象和数组都返回 "object":普通对象、数组、正则、日期、Map、Set 等,只要不是函数或原始值,一律返回
"object",无法区分具体构造类型 -
无法识别内置类实例(如 Array、Date):例如
typeof new Date()和typeof []都是"object" -
ES6+ 新增类型支持不完整:虽然支持
Symbol和BigInt,但对Promise、Proxy、TypedArray等仍返回"object"
替代方案建议
需要更精确判断时,可组合使用其他方法:
标签: javascript es6 java proxy
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~