程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

JavaScript数据类型检测(js判断数据类型的方法及优缺点)

balukai 2025-05-03 12:12:46 文章精选 2 ℃

1. JavaScript中的数据类型

JavaScript的数据类型分为两类:原始类型(Primitive type)、引用类型(Reference type),二者在内存中的存储位置不同。判断一个变量属于哪种类型,这两类数据类型的判断方式也有所有不同,分别使用typeof和instanceof进行检测。

原始类型

原始类型就叫做基本类型,在ECMAScript 5标准中共规定了5种基本类型,分别是:数字类型(Number)、字符串类型(String)、布尔值(Boolean)、Null、Undefined。在ECMAScript 2015(ECMAScript 6)中,还新增了Symbol。

原始类型存储在内存栈(stack)中,也就是说直接存储的变量的值。对于原始类型的访问是“值访问”,我们可以直接操作变量的实际值。

引用类型

除了6种原始类型外,都是引用类型。主要有:对象类型(Object)、数组类型(Array)、日期类型(Date)、错误类型(Error)、正则表达式类型(RegEx)、函数类型(Function)等。在ECMAScript 2015中,还新增了Promise、Map等引用类型。

引用类型是存储在内存堆(heap)中对象,也就是说直接存储的变量的值是一个指向原对象内存指针。对于原始类型的访问是“引用访问”,我们不能直接操作对象的实际内存空间。

2. 原始类型的检测

检测原始类型时,除“Null”类型外,都可以使用“typeof”操作符检测。“typeof”检测后会返回一个表示检测对象类型的字符串。“typeof”语法如下:

typeof <变量>

或者

typeof(<变量>)

使用“typeof”进行原始类型检测时,其返回值分别如下:

  • Number类型-返回'number'

  • String类型-返回'string'

  • Boolean类型-返回'boolean'

  • Undefined类型-返回'undefined'

  • Null类型-返回'object'

  • Symbol类型-返回'symbol'

示例如下:

对于原始类型中“Null”类型进行“typeof”检测时返回值为'object',要正确判断是否是“Null”类型,应该使用“===”和“!==”进行比较。

3. 引用类型的检测

除原始类型外都是引用类型,而JavaScript中Object类型是所有引用类型的基类型,所以大多数引用类型使用typeof检测时都会返回'object'。

示例如下:

如上所示,除“Function”,其它引用类型都返回了'object',“typeof”运算符并不能有效检测引用类型。

对于引用类型来说,更推荐使用“instanceof”运算符检测。其语法结构为:

value instanceof constructor

对上面引用类型做“instanceof”检测结果如下:

来自:http://itbilu.com

最近发表
标签列表