存储在堆栈上的Javascript字符串
我正在阅读,在第四章的总结中,可以看到: JavaScript变量中可以存储两种类型的值:原语值和引用值。 基本值有五种基本数据类型之一:未定义、Null、Boolean、Number和String。基本值和参考值具有以下特征:存储在堆栈上的Javascript字符串,javascript,stack,primitive,Javascript,Stack,Primitive,我正在阅读,在第四章的总结中,可以看到: JavaScript变量中可以存储两种类型的值:原语值和引用值。 基本值有五种基本数据类型之一:未定义、Null、Boolean、Number和String。基本值和参考值具有以下特征: 原语值的大小是固定的,因此存储在堆栈的内存中 但我可以有不同的字符串,比如: var a=“ABC” //或 var b=“一些非常令人恼火的长字符串…” 它们的大小明显不同,那么如何在堆栈上分配它们呢 我相信关于数字也可以问同样的问题 因此,我肯定在这里遗漏了一些
- 原语值的大小是固定的,因此存储在堆栈的内存中
在任何情况下,对于JS程序员来说,担心堆栈和堆都是毫无意义和令人分心的。理解各种类型的值的行为更为重要。我要说,
原始值的大小是固定的,因此存储在堆栈的内存中。
语句不是很准确。字符串具有固定的字符大小,但通常是动态大小的类型。我不明白这怎么会使它不可能保持在堆栈上。数字都是64位浮点,仅此而已。字符串的大小是可变的,但在JavaScript中它们是不可变的(创建后大小是固定的)。@Touffy你确定吗?这样就不可能向字符串中添加内容。当您“向字符串中添加内容”时,将创建一个新字符串来保存结果。这就是为什么按顺序使用大量的+
进行子字符串累加是一种不好的做法(因为速度慢),您应该改用array.join()。@RoboRobok当您连接或以其他方式“更改”时,会创建一个新字符串。因此变量的引用将发生变化。'对于短字符串,字符可以放在堆栈中的值中代替引用,因此堆上不需要额外的数据。'您对此有任何引用吗。我想知道这是不是真的。