как и где он хранится - спецификация не регламентирует.
например:
"yo";
означает выполнить експрешион "yo" которое должно вернуть ссылку на данные описывающих строку"yo"
или
127;
єто не число 127, єто литерал - особая форма выражения, котоую агент выполняет подобно любому другому и следует алгоритму, который в єтох случае вернет ссылку на данные описывающие число 127.
тем не менее ты прав, что спецификация применяет много разной работы к литералу, равную обьекту, потому как минимум внутри v8 стандартно - все обьект.
и только в случае возможной оптимизации кода, литерал (чаще всего число) может быть представлено не реальныйм си обьектом, а физическим числом на уровне процессора.
второй важный пункт - єто то, как согласно спецификации работает let.
1) єто не лет из js. єто свой собственный let спецификации (превед гениям документации)
2) любое связывание в спецификации єто всегда let или set
3) согласно спецификации, любое связывание работает reference like. То есть любое изменение идентификатора связанного с данным приводит к изменению всех связей всех идентификаторов связанных с ним, с єтим данным.
и, что важнее всего - єто справедливо и НАОБОРОТ.
именно потому, деюрє ВСЕ типы данных в js ссылочные.
исключение появилось тогда, когда появились typed array. Где больше 10 реальных типов данных в машинном представлении с минимумом абстракций и там нет ссылок а есть прямые изменения данны в памяти