首页 >web前端 >js教程 >JavaScript 中的不同数据类型。

JavaScript 中的不同数据类型。

Barbara Streisand
Barbara Streisand原创
2025-01-15 06:36:46268浏览

Different Data types in JavaScript.

JavaScript 中有不同的数据类型。

  • 原始类型:字符串、数字、布尔值、未定义、null、符号和 bigint。

  • 引用类型:对象、函数和数组。


原始类型

原始类型是 JavaScript 中最基本的数据类型。它们是一成不变的。这意味着一旦创建了原始值,就无法更改。不要将此与重新分配变量混淆。重新分配变量与更改基本类型的值不同。

重新分配就可以了??

let str = "hello";
str = "Hello"; // str -> "Hello"

在此示例中,我们将变量 str 重新分配给新值。这完全没问题。

相同的值在内存中也是相同的

let str1 = "hello";
let str2 = "hello";

这里有两个变量,str1 和 str2,它们具有相同的值。在 JavaScript 中,如果两个原始值相同,则它们相等。它们是相等的,因为在底层,两个变量都指向相同的内存位置。

相同的字符串不会在内存中重新创建。它们仅在内存中存储一​​次。 JavaScript 工程师使用一种名为字符串驻留的技术来优化内存使用。这种技术也用于数字。

原始类型是不可变的

let str = "hello";
str[0] = "H"; // str -> "hello"

字符串一旦创建就无法更改。在此示例中,我们尝试将字符串 str 的第一个字符更改为“H”。这行不通。字符串 str 将保持不变。原始类型是不可变的。

如果您需要创建一个新字符串,您可以明确地这样做:

let newStr = "H" + str.slice(1); // newStr -> "Hello"

参考类型

引用类型是可变的。这意味着您可以更改引用类型的值。它们被称为引用类型,以强调它们作为引用存储在内存中。虽然字符串也存储为引用,但它们是不可变的,并使用 驻留 技术来避免在内存中重新创建相同的值。

对象是在内存中新创建的

let obj1 = { name: "John" };
let obj2 = { name: "John" };

这里,obj1和obj2是两个不同的对象。它们存储在不同的内存位置。尽管它们具有相同的属性和值,但它们并不相等,因为对象是通过引用而不是值进行比较的。

改变具有相同引用的对象

let obj1 = { name: "John" };
let obj2 = obj1;

这里,obj1和obj2是同一个对象。两个变量都指向相同的内存位置。如果您更改此位置的值,它将反映在两个变量中。

例子

obj2.name = "Jane"; // obj1 -> { name: "Jane" }, obj2 -> { name: "Jane" }

想象一下它在内存中的样子:

Memory location 1: { name: "John" }

obj1 -> Memory location 1
obj2 -> Memory location 1

更新后:

let str = "hello";
str = "Hello"; // str -> "Hello"

我们更新了内存位置 1 中的值。很自然,obj1 和 obj2 都会反映此更改,因为它们都引用相同的内存位置。


结论

原始类型是不可变的,并通过字符串驻留等技术针对内存使用进行了优化,而引用类型通过可变性和共享引用提供了更大的灵活性。通过掌握这些概念,您可以更好地预测和控制代码的行为,从而构建更健壮且可维护的应用程序。

以上是JavaScript 中的不同数据类型。的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn