返回

程序员必知!JavaScript的数据类型及其判断

前端

JavaScript 的数据类型:

JavaScript 中的数据类型分为两大类:基本类型和引用类型。基本类型包括布尔值、数字、字符串、未定义、空、Symbol 和 BigInt。引用类型包括对象类型,对象类型可以包含任何类型的值,包括基本类型和引用类型的值。

基本类型:

布尔值(Boolean): 布尔值可以是 true 或 false,表示真或假。布尔值通常用于控制流程,例如 if 语句和 while 循环。

数字(Number): 数字可以是整数或小数。JavaScript 中的数字使用 64 位浮点数表示。

字符串(String): 字符串是一系列字符的集合。字符串可以用单引号或双引号表示。

未定义(Undefined): 未定义表示一个变量还没有被赋值。未定义的值不能与其他值进行比较。

空(Null): 空表示一个变量的值是故意没有赋值。空的值不能与其他值进行比较。

Symbol: Symbol 是一个唯一的值,它不能被复制或修改。Symbol 通常用于创建私有变量或方法。

BigInt: BigInt 是一个允许创建任意的任意长度整数的内置对象,其值超出 JavaScript 数字的范围。BigInt 的值使用字符串表示,并以一个大写字母 N 作为后缀。

引用类型:

对象(Object): 对象是一个键值对的集合。对象可以用大括号表示。对象可以包含任何类型的值,包括基本类型和引用类型的值。

数组(Array): 数组是有序的元素集合。数组可以用方括号表示。数组中的元素可以是任何类型的值,包括基本类型和引用类型的值。

日期(Date): 日期对象表示一个特定的日期和时间。日期对象可以用 new Date() 构造函数创建。

函数(Function): 函数是一段可重用的代码块。函数可以用 function 创建。函数可以接收参数并返回一个值。

类型判断:

typeof 运算符用于确定变量的数据类型。typeof 运算符的语法如下:

typeof variable_name

typeof 运算符的返回值包括:

  • string:如果变量是一个字符串。
  • number:如果变量是一个数字。
  • boolean:如果变量是一个布尔值。
  • undefined:如果变量是一个未定义的值。
  • object:如果变量是一个对象。
  • function:如果变量是一个函数。
  • symbol:如果变量是一个 Symbol 值。
  • bigint:如果变量是一个 BigInt 值。

JavaScript中,typeof 操作符能够识别基本数据类型,却不能区分引用数据类型。对于引用数据类型,无论 typeof 返回值是函数、对象,其实现都是调用 typeof 返回值相同的内部构造函数完成的。

基本包装类:

基本包装类包括布尔包装类、数字包装类和字符串包装类。基本包装类是对基本类型的一种扩展,它提供了更多的功能。

布尔包装类:

布尔包装类是 Boolean 对象。Boolean 对象具有以下属性:

  • value:布尔值。
  • toString():返回布尔值的字符串表示形式。

数字包装类:

数字包装类是 Number 对象。Number 对象具有以下属性:

  • value:数字值。
  • toString():返回数字值的字符串表示形式。

字符串包装类:

字符串包装类是 String 对象。String 对象具有以下属性:

  • value:字符串值。
  • toString():返回字符串值的字符串表示形式。

基础包装类与基本数据类型的关系:

基础包装类和基本数据类型之间存在着密切的关系。基础包装类是对基本数据类型的一种扩展,它提供了更多的功能。基本数据类型可以隐式转换为基础包装类,反之亦然。

void:

void 运算符用于表示没有返回值的表达式,也没有返回值。void 运算符的语法如下:

void expression

void 运算符的返回值是 undefined。

BigInt:

BigInt 是一个允许创建任意的任意长度整数的内置对象,其值超出 JavaScript 数字的范围。BigInt 的值使用字符串表示,并以一个大写字母 N 作为后缀。BigInt 具有以下属性:

  • value:BigInt 值。
  • toString():返回 BigInt 值的字符串表示形式。

示例:

以下代码演示了如何使用 typeof 运算符确定变量的数据类型:

var a = 10;
var b = "hello";
var c = true;
var d = undefined;
var e = null;
var f = Symbol("symbol");
var g = BigInt("1234567890123456789012345678901234567890");

console.log(typeof a); // number
console.log(typeof b); // string
console.log(typeof c); // boolean
console.log(typeof d); // undefined
console.log(typeof e); // object
console.log(typeof f); // symbol
console.log(typeof g); // bigint

以下代码演示了如何使用基本包装类:

var a = new Boolean(true);
var b = new Number(10);
var c = new String("hello");

console.log(a.value); // true
console.log(b.value); // 10
console.log(c.value); // hello

以下代码演示了如何使用 void 运算符:

var a = void 0;

console.log(a); // undefined

以下代码演示了如何使用 BigInt:

var a = BigInt("1234567890123456789012345678901234567890");

console.log(a.value); // 1234567890123456789012345678901234567890