JS数据类型

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

基本数据类型(Primitive Data Types)

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

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

  3. Boolean :表示逻辑实体,有两个值:truefalse

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

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

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

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

引用数据类型(Reference Data Types)

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

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

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

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

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

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

  7. WeakMapWeakSet (ES6 引入):WeakMapWeakSetMapSet 的变体,它们的键是弱引用,不会阻止垃圾回收。

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

  9. ProxyReflect (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 中的数据类型对于编写正确的代码和理解代码的行为至关重要。

相关推荐
小小编程路7 分钟前
C++ 异常 完整讲解
开发语言·c++
AI科技星1 小时前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
张忠琳1 小时前
【Go 1.26.4】Golang Select 深度解析
开发语言·后端·golang
AC赳赳老秦2 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
提笔了无痕2 小时前
如何用Go实现整套RAG流程
开发语言·后端·golang
(Charon)2 小时前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言
Yeats_Liao3 小时前
Feed流系统设计(三):数据模型与存储设计,从表结构到Redis收件箱
java·javascript·redis
我是真菜3 小时前
彻底理解js中的深浅拷贝
前端·javascript
2601_961875243 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
AI科技星3 小时前
数术工坊第八卷:算力革命
c语言·开发语言·网络·量子计算·agi