gpt4 book ai didi

javascript - 可变大小的 JavaScript 字符串如何成为原始类型?

转载 作者:行者123 更新时间:2023-11-28 02:42:44 25 4
gpt4 key购买 nike

据我了解,JavaScript 中的(基本)string 类型是一种原始类型,这意味着它的变量是在堆栈上分配的。

我本以为,对于一个可以在堆栈上分配的类型,它需要有一个固定的大小——这对于其他基本类型(如 boolean)来说大概也是如此。号码

我的假设是不是有点错误,或者是否有其他一些内部魔法用于在 JavaScript 原始类型中创建 string

<小时/>

编辑:当人们认为 JavaScript 是松散类型时,情况会变得更加复杂。这让我想知道如何在堆栈上分配任何局部变量......假设在函数执行过程中分配给它的内容的大小不是固定的。

但我猜想(也许是简化的)答案可能是所有局部变量都可以在堆栈上分配固定的最大大小。假设这是 8 个字节,我认为这是 number 类型的大小,并且应该足够大以容纳所有其他基本类型(string 除外)以及内存地址(当局部变量被分配引用类型时)。但是,字符串肯定不能限制为 8 个字节(或任何大小)。这让我得出结论,字符串(即使是原始类型)不是(不能)在堆栈上分配的。因此,JavaScript 中的术语“原始类型”用于表示“基本/构建 block ”类型,而不是必须在堆栈上分配的类型(与我在包括“Professional JavaScript.. ”,作者:尼古拉斯·扎卡斯)。

有人有任何其他看法或指向谈论此问题的好消息来源吗?

最佳答案

字符串既是对象又是基元。

做的时候:

var s = "this is a string";

你实际上是这样做的:

var s = new string("this is a string");

幕后。

第一个是带有字符的原始数组,第二个数组引用该数组。

字符串是不可变的,这意味着它们不能更改。如果您尝试更改它(即反转它),您将创建一个新的字符串基元,对象引用将指向该字符串基元。

关于javascript - 可变大小的 JavaScript 字符串如何成为原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com