当前位置: 首页 > news >正文

JS - 数据类型

JavaScript 的数据类型分为两大类:​​原始类型(基本类型)​​ 和​​对象类型(引用类型)​​。

1、原始类型(按值访问)包括:

String 字符串、Number 数字、Boolean 布尔值、Undefined 未定义、Null 空值、Symbol 唯一值、BigInt 大整数

2、对象类型(按引用访问)包括:

标准对象 Object、数组 Array、函数 Function、日期 Date、正则 RegExp,其他...

下面我们来详细解读每一种类型。

目录

一、原始类型 (Primitive Types)

1. ​​String (字符串)​​

2. ​​Number (数字)​​

3. ​​Boolean (布尔值)​​

4. ​​Undefined (未定义)​​

5. ​​Null (空值)​​

6. ​​Symbol (符号) (ES6)​​

7. ​​BigInt (大整数) (ES2020)​​

二、对象类型 (Object Types)

1. ​​Object (对象)​​

2. ​​Array (数组)​​

3. ​​Function (函数)​​

4. ​​Date (日期)​​

5. ​​RegExp (正则表达式)​​

6. ​​其他内置对象​​

三、关键特性与区别

1. 动态类型

2. 类型检测方法

3. 原始类型 vs 对象类型

总结



一、原始类型 (Primitive Types)

原始类型的值直接存储在变量访问的位置。​​当您将一个原始值赋值给另一个变量时,会创建该值的一个副本。​

1. ​​String (字符串)​

表示文本数据。

let name = "Alice";
let greeting = 'Hello World';
let template = `My name is ${name}`; // 模板字符串 (ES6)
2. ​​Number (数字)​

表示整数和浮点数。JavaScript 只有一种数字类型。

let age = 25;
let price = 99.99;
let temperature = -10;
let infinity = Infinity;
let notANumber = NaN; // 特殊值:不是一个数字
3. ​​Boolean (布尔值)​

表示逻辑值:truefalse

let isLogged = true;
let isEmpty = false;
4. ​​Undefined (未定义)​

表示变量已声明但尚未赋值。

let x;
console.log(x); // undefined
5. ​​Null (空值)​

表示一个空或不存在的值。​​需要主动赋值​​。

let user = null; // 表示user为空
6. ​​Symbol (符号) (ES6)​

表示唯一的、不可变的值,主要用于对象的唯一属性名。

let id1 = Symbol("id");
let id2 = Symbol("id");
console.log(id1 === id2); // false (即使描述相同,值也不同)// 用作对象键
let obj = {[id1]: "value"
};
7. ​​BigInt (大整数) (ES2020)​

表示任意精度的整数,用于大于 2^53 - 1 的整数。

let bigNumber = 9007199254740991n; // 字面量加 n
let alsoBig = BigInt("9007199254740991"); // 使用 BigInt 函数

二、对象类型 (Object Types)

对象类型是属性的集合,属性是键值对。​​当您将一个对象赋值给另一个变量时,复制的是引用(内存地址),而不是值本身。​

1. ​​Object (对象)​

最通用的对象类型。

let person = {name: "Bob",age: 30,isStudent: false
};
2. ​​Array (数组)​

用于存储有序的数据集合。

let fruits = ["apple", "banana", "orange"];
let mixed = [1, "hello", true, { name: "Alice" }];
3. ​​Function (函数)​

函数也是对象,可以被调用。

function greet(name) {return `Hello, ${name}!`;
}// 函数表达式
let multiply = function(a, b) {return a * b;
};// 箭头函数 (ES6)
let divide = (a, b) => a / b;
4. ​​Date (日期)​

用于处理日期和时间。

let now = new Date(); // 当前时间
let specificDate = new Date("2023-10-01");
5. ​​RegExp (正则表达式)​

用于模式匹配。

let pattern = /ab+c/; // 字面量形式
let regex = new RegExp("ab+c"); // 构造函数形式
6. ​​其他内置对象​
  • ​Map​​: 键值对集合,键可以是任意类型。

  • ​Set​​: 唯一值的集合。

  • ​Promise​​: 用于处理异步操作。

  • ​Error​​: 错误对象。


三、关键特性与区别

1. 动态类型

JavaScript 是弱类型(动态类型)语言,变量类型可以改变。

let dynamic = "I'm a string"; // String
dynamic = 42; // 现在变成了 Number
dynamic = true; // 现在变成了 Boolean
2. 类型检测方法

方法

说明

示例

typeof

检测基本类型

typeof "hello" // "string"

instanceof

检测对象类型

[] instanceof Array // true

Array.isArray()

检测数组

Array.isArray([]) // true

// typeof 的局限性
typeof "hello"        // "string"
typeof 42            // "number"
typeof true          // "boolean"
typeof undefined     // "undefined"
typeof Symbol()      // "symbol"
typeof 123n          // "bigint"
typeof null          // "object" (历史遗留问题)
typeof []            // "object" (无法区分数组)
typeof {}            // "object"
typeof function(){}  // "function"
3. 原始类型 vs 对象类型

特性

原始类型

对象类型

存储方式

按值存储

按引用存储

可变性

不可变

可变

比较

值比较

引用比较

复制

创建副本

复制引用

// 原始类型:值比较
let a = 10;
let b = a; // b 是 a 值的副本
b = 20;
console.log(a); // 10 (a 不变)// 对象类型:引用比较
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 和 obj1 指向同一个对象
obj2.name = "Bob";
console.log(obj1.name); // "Bob" (obj1 也被修改了)

总结

  • ​7种原始类型​​:String, Number, Boolean, Undefined, Null, Symbol, BigInt

  • ​对象类型​​:Object, Array, Function, Date, RegExp 等

  • ​关键区别​​:原始类型按值访问,对象类型按引用访问

掌握这些数据类型是深入学习 JavaScript 的基础,特别是在理解变量赋值、函数传参和内存管理方面至关重要。

http://www.dtcms.com/a/479780.html

相关文章:

  • 站长之家新网址网络营销外包有限公司
  • 未来之窗昭和仙君(十六)网页数字动画函数——东方仙盟筑基期
  • 新手怎么学习网站建设网站建设横幅
  • 怎样做简单公司网站ip代理提取网站源码
  • 【Python】从 MP4 文件中提取中英双语字幕并生成双语字幕文件(如 .srt)
  • 基于ffmpeg库,在AGX上编译jetsonFFmpeg库带有硬件加速的h264_nvmpi视频编解码器
  • wordpress熊掌号自动提交seo如何使用wordpress优化
  • 网站维护费一般多少钱湖南好搜网站建设
  • 机器人软件开发和网站开发wordpress后台登录
  • 3d演示中国空间站建造历程牡丹江建站
  • 服务器网站管理系统泰山信息科技有限公司
  • 网站备案是域名备案还是服务器备案长沙房价一览表
  • 行业网站名称广州公司网站托管
  • wordpress站点地址写错网页设计师考试报名
  • 保定涿州网站建设网站开发人员的工作
  • [Qlib] 数据处理`DataHandlerLP` | `Alpha158`
  • wordpress批量拿站263企业邮箱腾讯登录入口
  • 网站图片设置方法在网站上做远程教育系统多少钱
  • 深度学习(三)
  • 珠海本地网站设计公司做网站售后好的公司
  • 门户网站宣传方案做一个网站如何赚钱
  • 网站开发设计流程文档广告网页推广方案
  • 网站维护模式移动网站适配
  • 营销网站建设的目的北京百度总部电话
  • C++STL---静态数组array
  • 东莞樟木头网站设计使用vue做简单网站教程
  • 济南想建设网站长宁网站建设价格
  • 【开题答辩全过程】以 保定基于java的超市库存管理系统为例,包含答辩的问题和答案
  • 设计好的建设专业网站上海新建设建筑设计有限公司网站
  • 建立一个团购网站需要多少钱昭通微网站建设