typeof无法准确区分null、数组、日期等对象类型,需配合Object.prototype.toString.call()或Array.isArray等方法;其返回值包括"number"、"string"、"boolean"、"undefined"、"function"、"symbol"、"bigint"及统一的"object"。

JavaScript 检测数据类型,typeof 是最常用的方法,但它有局限性——比如对 null、数组、对象、日期、正则等都返回 "object",容易误判。所以不能单靠 typeof,得配合其他方式一起用。
typeof 是一个操作符(不是函数),后面跟变量或字面量,返回一个表示类型的字符串:
typeof 42 → "number"
typeof "hello" → "string"
typeof true → "boolean"
typeof undefined → "undefined"
typeof function() {} → "function"
typeof null → "object"(这是历史 bug,但一直保留)typeof []、typeof {}、typeof new Date() → 全是 "object"
typeof Symbol("a") → "symbol"
typeof BigInt(123) → "bigint"
当 typeof 返回 "object" 时,需要用 Object.prototype.toString.call() 来精确识别:
Object.prototype.toString.call([]) → "[object Array]"
Object.prototype.toString.call(new Date()) → "[object Date]"
Object.prototype.toString.call(/abc/) → "[object RegExp]"
Object.prototype.toString.call(null) → "[object Null]"
Object.prototype.toString.call(undefined) → "[object Undefined]"
可以封装一个通用判断函数:
立即学习“Java免费学习笔记(深入)”;
function getType(val) {Array.isArray(arr)(推荐,比 toString 更直接)val !== null && typeof val === 'object' && val.constructor === Object,或更稳妥的 Object.getPrototypeOf(val) === Object.prototype
typeof fn === 'function' 即可,现代 JS 中也兼容箭头函数val === Object(val) 为 false 时就是原始值(注意:new String('a') 是对象,会返回 true)基本上就这些。用 typeof 快速分大类,再用 toString.call 或专用方法(如 Array.isArray)细化,就能稳稳判断绝大多数类型了。
以上就是javascript如何检测数据类型_ typeof怎么用的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号