JavaScript数据类型与数组判断方法详解

作者:小括号

时间:2026-10-30

浏览:337

本文系统梳理JavaScript的六大数据类型,深入解析typeof、instanceof、constructor及Object.prototype.toString.call等数组判断方法的原理与适用场景,帮助开发者准确识别数据类型,避免常见陷阱。

文章目录

前言部分:

在近期的面试中,我遇到了一道看似基础却未能准确作答的题目。这或许是因为当时过于紧张,导致表现不佳,事后回想起来深感懊恼。为了加深记忆并避免类似错误,我决定对此进行详细记录与总结。技术之路漫长,仍需持续努力与积累。

JS六大数据类型概述

1. JS的六大数据类型

number:表示数值类型,包括整数和浮点数等。

string:字符串类型,通常由单引号或双引号包裹表示。

Boolean:布尔类型,返回true或false,这两个值并不一定直接对应数字1和0。

object:对象类型,可以通过执行new操作符后跟要创建的对象类型名称来实例化。

null:仅有一个值的数据类型。从逻辑上讲,null值表示一个空对象指针。

undefined:未定义类型。当使用var声明变量但未对其进行初始化时,该变量的默认值为undefined。

typeof运算符判断类型

2. 利用typeof进行数据类型判断

typeof运算符可以解决大部分数据类型的判断需求,其返回值是一个字符串,用于说明运算数的类型。


//判断变量num是不是一个数字类型
if(typeof num=='number') {
  return true;
}

返回结果如下:


var a="hling"; console.log(a); //string
var a=1; console.log(a); //number
var a=false; console.log(a); //boolean
var a; console.log(typeof a); //undfined

var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object

var a = function(){}; console.log(typeof a) 
//function除了可以判断数据类型还可以判断function类型

需要注意的是,除了string、number、boolean和undefined这四种类型外,null、object和array使用typeof判断时,返回的结果均为object类型。

对于函数类型,typeof返回的是function,例如typeof(Date)或typeof(eval)等。

数组类型判断方法

3. JS中判断数组类型的方法

1) 使用instanceof运算符

instanceof用于判断一个变量是否属于某个对象的实例,它本质上是一个三目运算表达式。该操作符与JavaScript的面向对象机制密切相关,理解它需要先了解JavaScript中的面向对象概念。因为该操作符是检测对象的原型链是否指向构造函数的prototype对象的。


a instanceof b?alert("true"):alert("false") 
//注意b值是你想要判断的那种数据类型,是不是一个字符串,比如Array

示例代码:


var arr = [1,2,3,1]; 
alert(arr instanceof Array); // true 

2) 使用constructor属性

根据W3C定义,constructor属性返回对创建此对象的数组函数的引用。


var arr = []; 
arr instanceof Array; // true 
arr.constructor == Array; //true

判断各种类型的方法如下:


console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(false.constructor == Boolean);
console.log([].constructor == Array);
console.log({}.constructor == Object);

通用的判断方法示例:


function isArray(object){
  return object && typeof object==='object' &&
      Array == object.constructor;
}

3) 特性判断

可以使用Object.isArray()来判断,其目的是准确检测一个值是否为数组。该方法在IE9+、Firefox 4+、Safari 5+、Opera 10.5+和Chrome中均已实现,但在IE8之前的版本中不支持。


function isArray(object){
  return object && typeof object==='object' &&  
      typeof object.length==='number' && 
      typeof object.splice==='function' &&  
       //判断length属性是否是可枚举的 对于数组 将得到false 
      !(object.propertyIsEnumerable('length'));
}

4) 使用Object.prototype.toString.call


Object.prototype.toString.call(value) == '[object Array]'

以上关于JavaScript数据类型判断与数组检测方法的分享到此结束,希望能为大家提供参考,也希望大家多多支持本站。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章