JS数据类型

JavaScript 中有多种数据类型,可以分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。

基本数据类型(Primitive Data Types)

  1. Undefined :表示一个未定义的值。当声明一个变量但未对其赋值时,该变量的默认值为 undefined。

  2. Null:表示一个空对象指针。它通常用来表示变量没有值或者不存在。

  3. Boolean :表示逻辑实体,有两个值:true 和 false。

  4. Number:表示数字,包括整数和浮点数。JavaScript 中的数字都是浮点型,没有单独的整数类型。

  5. String:表示文本数据,由一系列字符组成。在 JavaScript 中,字符串可以用单引号、双引号或反引号(模板字符串)来定义。

  6. Symbol (ES6 引入):表示独一无二的值。Symbol 值通过 Symbol() 函数生成,通常用作对象属性的键。

  7. BigInt (ES10 引入):表示任意精度的整数。在 JavaScript 中,常规的 Number 类型可以安全表示的最大整数是 2^53 - 1,BigInt 可以用来表示更大的整数。

引用数据类型(Reference Data Types)

  1. Object:对象是属性的集合,每个属性都由键值对组成。对象是 JavaScript 中最复杂的数据类型,包括数组、函数、日期等。

  2. Array:数组是一种特殊的对象,用于存储有序的元素集合。数组元素可以通过索引访问。

  3. Function:函数是 JavaScript 中的一等公民,可以被赋值给变量,作为参数传递给其他函数,或者作为其他函数的返回值。

  4. Date:日期对象用于处理日期和时间。

  5. RegExp:正则表达式对象用于匹配字符串的模式。

  6. Map 和 Set (ES6 引入):Map 是一种键值对的集合,Set 是一种不包含重复元素的集合。

  7. WeakMap 和 WeakSet (ES6 引入):WeakMap 和 WeakSet 是 Map 和 Set 的变体,它们的键是弱引用,不会阻止垃圾回收。

  8. Promise(ES6 引入):表示异步操作的最终完成(或失败)及其结果值。

  9. Proxy 和 Reflect (ES6 引入):Proxy 可以创建一个对象的代理,用于实现自定义行为;Reflect 是一个内置对象,提供了一系列与对象操作相关的方法。

  10. Generator(ES6 引入):生成器函数是一种特殊类型的函数,可以暂停和恢复执行。

  11. BigInt (ES10 引入):虽然 BigInt 通常被归类为基本数据类型,但它也可以被视为引用类型,因为它可以作为对象存在。

在 JavaScript 中,可以使用 typeof 运算符来检查变量的数据类型。例如:

javascript 复制代码
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"(这是一个历史遗留的 bug)
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof Symbol("sym")); // "symbol"
console.log(typeof 123n); // "bigint"
console.log(typeof {}); // "object"
console.log(typeof []); // "object"(数组实际上是对象)
console.log(typeof function() {}); // "function"

了解 JavaScript 中的数据类型对于编写正确的代码和理解代码的行为至关重要。

相关推荐
蹊黎2 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
半个落月7 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
半个落月7 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
程序猿追8 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓8 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播8 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
墨云安全9 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
u0111026759 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
摇滚侠9 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y9 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python