Я читал Professional JavaScript for Web Developers 3rd ed. и в кратком изложении главы 4 можно прочитать:строка Javascript хранится в стеке
Два типа значений могут быть сохранены в JavaScript переменные: примитивные значения и эталонных значений. Примитивные значения имеют один из пяти примитивных типов данных: Undefined, Null, Boolean, Number и String. Примитивные и опорные значения имеют следующие характеристики:
- Примитивные значения имеют фиксированный размер и поэтому сохраняются в памяти в стеке.
Но я могу иметь разные строки, скажет:
вар а = "ABC";
// или
вар б = «Некоторые очень раздражающе длинная строка ...»
Они явно отличаются по размеру, так как они могут быть выделены в стеке?
Я считаю, что тот же вопрос может быть задан вопрос о цифрах ...
Так что я наверняка не хватает что-то важное здесь.
Может кто-нибудь объяснить, почему строки/номера имеют фиксированный размер и как их можно хранить в стеке?
Я бы сказал, что «Примитивные значения имеют фиксированный размер и поэтому хранятся в памяти в стеке». Предложение не очень точное. Строка имеет фиксированный размер символа, но обычно это тип с динамическим размером. Я не понимаю, как это может сделать невозможным сохранить его в стеке. –
Номера - это все 64-битные поплавки, вот и все. Строки имеют переменный размер, но в JavaScript они неизменяемы (размер фиксируется после создания). – Touffy
@Touffy Вы уверены? Таким образом, было бы невозможно добавить что-то в строку. –