JavaScript判断变量类型:数组、函数与对象的检测方法

作者:木棉

时间:2026-10-29

浏览:528

本文介绍在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;
}

以上就是本文全部内容了,希望大家能够喜欢。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章