切换语言为:繁体

JavaScript 中的 6 种数据类型分类以及判断方法

  • 爱糖宝
  • 2024-07-02
  • 2067
  • 0
  • 0

在 JavaScript 中,一共有 6 种数据类型(不包含 ES6 新增的 Symbol 和 BigInt )。这 6 种类型可划分为原始数据类型(又称基本数据类型)和引用类型(又称对象类型)。本文对其进行大致的介绍,每个类型具体的使用会在后续几篇文章中进行详细说明。

1.原始类型

  • 字符串(string):文本(比如 Hello World)。

  • 数值(number):整数和小数(比如 1 和 3.14)。

  • 布尔值(Boolean),有 2 个值分别是:true 和 false。

  • null,一个表明空值的特殊关键字。JavaScript 是大小写敏感的,因此 null 与 Null、NULL 或其他格式的变体完全不同。

  • undefined,和 null 一样是一个特殊的关键字,undefined 表示“未定义”或不存在。是变量还未赋值时的属性。

对于原始类型来说,它们的值保存在栈中,直接可以进行操作。例如:

var a = 10 ;
var b = a ;
b = 20 ;
console.log(a); // 10


JavaScript 中的 6 种数据类型分类以及判断方法

2.引用类型

包含了数组(Array)、对象(object)、函数(function)、日期对象(Date)、正则表达式(RegExp)等。需要注意的是,引用数据类型是保存在栈内存和堆内存中的对象。在 JavaScript 中,你不可以直接访问堆内存中的位置或操作堆内存空间,只能操作对象保存在栈内存中的地址。例如:

var obj1 = {}
var obj2 = obj1;
obj2.name = "orange";
console.log(obj1.name); //orange


可以看到明明在创建了一个空的 obj1 对象,但是在 obj2 中添加name属性后再次打印 obj1 原先不存在的name属性,也可以打印出来。从下面两张图中可以看到由于 obj2 保存的是 obj1 在堆内存中的地址,所以在其更改时 obj1 自然而然的能打印出name属性 这就是上述提到的引用类型与原始数据类型的区别了。

JavaScript 中的 6 种数据类型分类以及判断方法

JavaScript 中的 6 种数据类型分类以及判断方法

3.类型判断

在 JavaScript 中,常见的有三种用于判断数据类型的方法

typeof 运算符

该方法一般用来判断基本数据类型,返回数据类型的字符串形式。可以返回 string,number,boolean,symbol,bigint,unfined,object,function 这⼋种类型。Typeof 运算符常用在判断语句中,例如:

if(typeof === 'string'){
    console.log('该类型为string类型')
}


//举几个typeof运算符的例子:
typeof "helloworld"; //"string"
typeof 123; //"number"
typeof true; //"boolean"
typeof undefined; //"undefined"
typeof function () {}; //"function"
typeof {}; //"object"
typeof Symbol(); //"symbol"
typeof null; //"object"
typeof [1,2,3]; //"object"
typeof new Date(); //"object"
typeof new RegExp(); //"object"
typeof Null //"undefined


这里我们可以看到typeof null === "object"而不是null,这是因为在 JavaScript 中,不同的对象都是使用⼆进制存储的,如果⼆进制前三位都是 0 的话,系统会判断为是 Object 类型,而 null 的⼆进制全是 0,⾃然也就判断为 Object。

instanceof 运算符

该运算符用于判断引用数据类型,判断原始数据类型时基本无效。

  • 可以判断⼀个实例是否属于某种类型

  • 可以判断⼀个实例是否是其⽗类型或者祖先类型

[] instanceof Array; // true
[] instanceof Object; // true
new Date() instanceof Date // true

Object.prototype.toString.call

该方法是使用了 Object 原型对象上的toString⽅法,该⽅法默认返回其调⽤者的具体类型,返回的格式为为[object,xxx],xxx 是具体的数据类型。其中包括:String, Number,Boolean,Undefined,Null,Function,Date,Array,RegExp 等等基本上所有对象的类型都可以通过这个⽅法获取到。这里简单对其进行介绍,后续文章还会详细说明。以下列举常见数据类型的 Object.prototype.toString 方法返回的值:

数值:  Object.prototype.toString.call(123) //"[object Number]"
字符串:  Object.prototype.toString.call("a") //"[object String]"
布尔值:  Object.prototype.toString.call(false) //"[object Boolean]"
undefined:  Object.prototype.toString.call(undefined) //"[object Undefined]"
null:   Object.prototype.toString.call(null) //"[object Null]"
数组:   Object.prototype.toString.call([]) //"[object Array]"
日期对象:   Object.prototype.toString.call(new Date()) //"[object Date]"
函数:   Object.prototype.toString.call(function(){}) //"[object Function]"
RegExp对象: Object.prototype.toString.call(new RegExp("ab+c", "i")) //"[object RegExp]"

0条评论

您的电子邮件等信息不会被公开,以下所有项均必填

OK! You can skip this field.