JavaScript判断变量类型:数组、函数与对象的检测方法
本文介绍在JavaScript中如何准确判断变量是否为数组、函数或对象。针对数组,推荐使用ES5的Array.isArray,并兼容Object.prototype.toString;针对函数,结合typeof与原型链检测以解决浏览器Bug;针对对象,需排除null值并区分函数类型。
判断数组类型
数组
在ECMAScript 5标准中,Array.isArray() 是原生提供的数组判断方法,支持IE9及以上版本的浏览器。为了兼顾旧版浏览器的兼容性,若该方法不可用,可通过 Object.prototype.toString.call(obj) === '[object Array]' 进行替代判断。
代码如下:
var isArray = Array.isArray || function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
判断函数类型
函数
判断函数最简单且性能较高的方式是使用 typeof obj == 'function'。然而,考虑到部分旧版浏览器存在已知Bug,更稳妥的做法是使用 Object.prototype.toString.call(obj) === '[object Function]' 进行精确匹配。
代码如下:
var isFunction = function(obj) {
return Object.prototype.toString.call(obj) === '[object Function]';
}
if(typeof /./ != 'function' && typeof Int8Array != 'object') {
isFunction = function(obj) {
return typeof obj == 'function';
}
}
判断对象类型
对象
在JavaScript中,复杂类型统称为对象,而函数本质上也是对象的一种。对这两者使用 typeof 运算符,会分别返回 'object' 和 'function'。此外,必须排除 null 值的情况,因为 typeof null 同样返回 'object',需通过额外逻辑进行区分。
代码如下:
var isObject = function(obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
}
以上就是本文全部内容了,希望大家能够喜欢。
JS合并多个数组的三种方法:concat、spread与flat
2026-11-05 17:39:45
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
