理解 JavaScript 数据类型:综合指南

***### JavaScript 中的数据类型

**

**1. **原始数据类型**

**

在 JavaScript 中,**原始数据类型**是不可变的,表示单个值。这些包括:

**1. **字符串**

** 字符串是用单引号 (`'`)、双引号 (`"`) 或反引号 (```) 括起来的一系列字符。

  • 例如: let name = 'John Doe'; // 使用单引号的字符串 let Greeting = "Hello, world!"; // 使用双引号的字符串 let message = `Welcome to JavaScript!`; // 使用模板文字的字符串
  • **2. **数字**

    ** JavaScript 的数字只有一种类型:“Number”,它既表示整数,又表示浮点数。

  • 例如: let age = 25; // 整数 let price = 19.99; // 浮点数
  • **3. **BigInt**

    ** `BigInt` 用于表示太大而无法用 `Number` 类型表示的整数。它可以表示任意大的整数。

  • 例如: let largeNumber = 1234567890123456789012345678901234567890n; // BigInt
  • **4. **布尔**

    ** 布尔值表示两个值之一:`true` 或 `false`。它通常用于条件表达式中。

  • 例如: let isAdult = true; // Boolean let isVerified = false; // Boolean
  • **5. **未定义**

    ** 声明但未赋值的变量为 `undefined`。它也是未初始化变量的默认值。

  • 例如: let name; // 声明但未赋值 console.log(name); // 输出:undefined
  • **6. **空**

    ** `null` 表示故意不包含任何对象值。它是一个赋值。

  • 例如: let user = null; // Null 是故意为空的
  • **7. **符号**

    ** `Symbol` 是一个唯一且不可变的值,通常用作对象属性的标识符。

  • 例如: let sym = Symbol('description'); console.log(sym); // 输出:Symbol(description)
  • **8. **undefined 与 null**

    ** - `undefined` 表示变量已被声明但尚未分配值。

  • null 是故意分配的“无值”状态。
  • 例如: let a; let b = null; console.log(a); // undefined console.log(b); // null
  • **2. **非原始(引用)数据类型**

    **

    与原始数据类型相比,**引用数据类型**存储对存储数据的内存位置的引用。它们包括:

    **1. **对象**

    ** 对象是键值对的集合,其中键(或属性)是字符串(或符号),值可以是任何数据类型,包括其他对象。

  • 例如: let person = { name: 'Alice', age: 30, isEmployed: true }; console.log(person.name); // 输出:Alice
  • **2. **数组**

    ** 数组是有序的值列表。它们可以保存多种数据类型,并按数字索引。

  • 例如: let fruit = ['Apple', 'Banana', 'Cherry']; console.log(fruits[0]); // 输出:Apple
  • **3. **功能**

    ** 函数是 JavaScript 中的一等对象。它们可以分配给变量、作为参数传递以及从其他函数返回。

  • 例如: functiongreet(name) { return `Hello, ${name}!`; } console.log(greet('Alice')); // 输出:Hello, Alice!
  • **3. **类型强制**

    **

    JavaScript 会在必要时自动转换数据类型。这称为**类型强制**。

    **1. **隐式强制**

    ** JavaScript 在执行加法、减法等运算时会自动转换类型。

  • 例如: let x = '5' + 1; // '5' 是字符串,1 是数字 console.log(x); // 输出:'51'(字符串连接)
  • **2. **显式强制**

    ** 您可以使用 `String()`、`Number()`、`Boolean()` 等函数手动转换数据类型。

  • 例如: let str = "123"; let num = Number(str); // 明确将字符串强制转换为数字 console.log(num); // 输出:123
  • **4. **类型检查**

    **

    您可以使用 `typeof` 运算符(针对原始类型)和 `Array.isArray()`(针对数组)检查变量的数据类型。

    **1. **使用 typeof**

    ** `typeof` 运算符返回变量的数据类型。

  • 例如: let num = 10; let str = "Hello"; console.log(typeof num); // 输出:'number' console.log(typeof str); // 输出:'string'
  • **2. **检查数组**

    ** `Array.isArray()` 方法检查一个值是否是一个数组。

  • 例如: let arr = [1, 2, 3]; console.log(Array.isArray(arr)); // 输出:true
  • **5. **特殊情况**

    **

    **1. **NaN(非数字)**

    ** `NaN` 是一个特殊值,表示无效数字。它是无法产生有效数字的运算的结果。

  • 例如: let result = 0 / 0; console.log(result); // 输出:NaN console.log(isNaN(result)); // 输出:true
  • **2. **无限**

    ** `Infinity` 表示无限大的数字。它可以是正数或负数,具体取决于上下文。

  • 例如: let bigNumber = 1 / 0; console.log(bigNumber); // 输出:Infinity
  • **6. **数据类型之间的转换**

    **

    您可以使用各种方法显式地将一种数据类型转换为另一种数据类型:

    **1. **字符串转数字**

    **

    let str = '100';
       let num = Number(str); // Converts string to number
       console.log(num); // Output: 100

    **2. **数字转字符串**

    **

    let num = 123;
       let str = String(num); // Converts number to string
       console.log(str); // Output: "123"

    **3. **布尔值转数字**

    ** - `true` 转换为 `1`,`false` 转换为 `0`。

    let boolTrue = true;
       let boolFalse = false;
       console.log(Number(boolTrue)); // Output: 1
       console.log(Number(boolFalse)); // Output: 0

    **4. **将 Null 转换为数字或字符串**

    ** - 当强制转换为数字时,`null` 转换为 `0`,而当强制转换为字符串时,则转换为 `"null"`。

    let nullValue = null;
       console.log(Number(nullValue)); // Output: 0
       console.log(String(nullValue)); // Output: "null"

    **嗨,我是 Abhay Singh Kathayat!**

    我是一名全栈开发人员,精通前端和后端技术。我使用多种编程语言和框架来构建高效、可扩展且用户友好的应用程序。

    请随时通过我的商务电子邮件联系我:kaashshorts28@gmail.com。