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

相关推荐
小坏讲微服务3 小时前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发
Kiri霧3 小时前
Scala 循环控制:掌握 while 和 for 循环
大数据·开发语言·scala
闲人编程4 小时前
Python的抽象基类(ABC):定义接口契约的艺术
开发语言·python·接口·抽象类·基类·abc·codecapsule
qq_172805594 小时前
Go 语言结构型设计模式深度解析
开发语言·设计模式·golang
lkbhua莱克瓦244 小时前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合
骑自行车的码农4 小时前
🍂 React DOM树的构建原理和算法
javascript·算法·react.js
北极糊的狐4 小时前
Vue3 中父子组件传参是组件通信的核心场景,需遵循「父传子靠 Props,子传父靠自定义事件」的原则,以下是资料总结
前端·javascript·vue.js
20岁30年经验的码农4 小时前
Java Elasticsearch 实战指南
java·开发语言·elasticsearch
雾岛听蓝4 小时前
C++ 类和对象(一):从概念到实践,吃透类的核心基础
开发语言·c++·经验分享·笔记
CoderYanger5 小时前
优选算法-优先级队列(堆):75.数据流中的第K大元素
java·开发语言·算法·leetcode·职场和发展·1024程序员节