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

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄3 天前
JavaScript 隐式全局变量解析
javascript
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端