JavaScript 数据类型详解:基本类型与引用类型的区别

作者:小括号

时间:2026-10-25

浏览:210

本文深入解析 JavaScript 中的数据类型,涵盖基本类型(String、Number、Boolean、Null、Undefined、Symbol)与引用类型(Object、Array、Function)。详细阐述栈内存与堆内存的存储机制,演示字符串、数字、布尔值的定义与转换,并重点讲解使用 typeof、Array.isArray 及 instanceof 进行类型判断的方法与注意事项。

文章目录

一、基本数据类型(原始值类型)

JavaScript 的基本类型包括:字符串(String)、数字(Number)、布尔值(Boolean)、空值(Null)、未定义(Undefined)以及 Symbol。

在内存管理中,基本类型的变量通常存储在栈内存(Stack)中。栈内存保存的是变量的标识符以及指向实际数据位置的指针。

注:Symbol 是 ES6 标准引入的一种新的原始数据类型,主要用于表示独一无二的值,常用于对象属性的键名以避免冲突。

JavaScript 是一门动态类型语言,这意味着同一个变量可以在程序运行过程中被赋予不同类型的值。

var x;               // x 为 undefined
var x = 5;           // 现在 x 为数字
var x = "John";      // 现在 x 为字符

1、字符串

字符串用于存储字符序列,例如文本内容 "Bill Gates"。

在 JavaScript 中,字符串可以用单引号或双引号包裹任意文本内容。

var carname="Volvo XC60";
var carname='Volvo XC60';

若字符串内部需要使用与包裹符号相同的引号,可通过转义字符处理,或者交替使用单双引号来避免语法错误。

var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';

2、数字

JavaScript 中只有一种数字类型,它既可以表示整数,也可以表示带有小数点的浮点数。

var x1=34.00;      //使用小数点来写
var x2=34;         //不使用小数点来写

对于极大或极小的数值,可以使用科学计数法(指数形式)进行书写,例如 123e5 表示 12300000。

var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

3、布尔

布尔(Boolean)类型仅包含两个固定值:true 和 false。

var x=true;
var y=false;

布尔值通常用于条件判断语句中,以控制程序的执行流程。

要将任意类型的值转换为布尔型,可以在该值前添加两个感叹号(!!)。例如,!!0 的结果为 false,而除 0、null、undefined、NaN、空字符串外的其他值转换结果均为 true。

4、undefined 和 null

当一个变量被声明但未赋值时,其默认值为 undefined,表示变量尚未包含任何值。

可以通过将变量显式赋值为 null 来清空该变量,表示“无对象”或“空引用”。需要注意的是,undefined 和 null 在代码中必须全小写。

cars=null;
person=null;

虽然 undefined 与 null 在使用相等运算符(==)比较时值相等,但在使用严格相等运算符(===)比较时,由于类型不同,结果不相等。

typeof undefined              // undefined
typeof null                   // object
null == undefined             // true
null === undefined            // false

原始数据值(Primitive values)是指没有额外属性和方法的单一简单数据值。

使用 typeof 运算符可以检测并返回以下原始类型之一:

  • string
  • number
  • boolean
  • undefined
typeof "Bill"              // 返回 "string"
typeof 3.14                // 返回 "number"
typeof true                // 返回 "boolean"
typeof false               // 返回 "boolean"
typeof x                   // 返回 "undefined" (假如 x 没有值)

二、引用数据类型:

常见的引用数据类型包括对象(Object)、数组(Array)和函数(Function)。引用类型的值存储在堆内存(Heap)中,栈内存中仅保存指向堆内存中实际对象的指针。

1、数组

以下代码展示了如何创建一个名为 cars 的数组:

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";

或者使用紧凑写法 (condensed array) 创建数组:

var cars=new Array("Saab","Volvo","BMW");

或者使用字面量语法 (literal array) 创建数组:

var cars=["Saab","Volvo","BMW"];

若要创建空数组,可以使用 new Array() 或字面量 []。

var arr3 = new Array( );  
var arr4 = [ ];

JavaScript 数组的下标从 0 开始,因此第一个元素索引为 [0],第二个为 [1],依此类推。

您将在本教程稍后的章节中学到更多关于数组的知识。

2、 对象

对象由花括号 {} 分隔。在括号内部,对象的属性以“名称: 值”对的形式定义,各属性之间由逗号分隔。

var person={firstname:"John", lastname:"Doe", id:5566};

上述示例中的对象 (person) 包含三个属性:firstname、lastname 以及 id。

JavaScript 对象声明中的空格和换行符不影响代码执行,因此声明可以跨越多行书写以提高可读性。

var person={
firstname : "John",
lastname  : "Doe",
id        :  5566
};

也可以先创建一个空对象,随后动态追加属性和方法。

var people = new Object();
people.name = 'Tom';   
people.age = 21;  
people.eat = function(){  }

访问对象属性主要有两种方式:点语法和方括号语法。

name=person.lastname;
name=person["lastname"];

3、函数

var  fn = function(){};
console.log(typeof(fn));  //'function'

typeof 运算符对于函数类型会返回以下结果之一:

  • 需要注意的是,typeof 运算符对于对象、数组或 null 均返回 "object"。
  • 然而,typeof 运算符对于函数不会返回 "object",而是返回 "function"。
typeof {name:'Bill', age:62} // 返回 "object"
typeof [1,2,3,4]             // 返回 "object" (并非 "array",参见下面的注释)
typeof null                  // 返回 "object"
typeof function myFunc(){}   // 返回 "function"

由于 typeof 运算符将数组返回为 "object"(因为在 JavaScript 中数组本质上是对象),若需准确判断一个对象是否为数组,可以使用以下两种方法:

1、使用 Array.isArray 方法:该方法从 IE9+ 开始得到支持,是判断数组的推荐方式。

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 判断是否支持该方法
if (Array.isArray) {
    if(Array.isArray(cars)) {
        document.write("该对象是一个数组。") ;
    }
}

2、使用 instanceof 操作符:通过检查原型链来判断对象是否为数组的实例。

var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";

if (cars instanceof Array) {
    document.write("该对象是一个数组。") ;
}

到此这篇关于JavaScript数据类型的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章