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

相关推荐
雾月551 小时前
LeetCode 941 有效的山脉数组
java·开发语言·数据结构·算法·leetcode·职场和发展
獨枭2 小时前
使用 Spring Boot 快速构建企业微信 JS-SDK 权限签名后端服务
javascript·spring boot·企业微信
晨曦5432102 小时前
函数和模式化——python
开发语言·python
leluckys3 小时前
swift-08-属性、汇编分析inout本质
开发语言·汇编·swift
嘤国大力士4 小时前
C++11&QT复习 (十六)
java·开发语言·c++
前端.火鸡4 小时前
认识vue中的install和使用场景
前端·javascript·vue.js
念九_ysl4 小时前
Java中的列表(List):操作与实现详解
java·开发语言·list
阿昆的科研日常4 小时前
Matlab进阶绘图第74期-带填充纹理的单组柱状图
开发语言·matlab·可视化·论文插图