стеке, под обьекты в куче.
const a: String = new String ('abc')
const b: String = new String('abc')
a==b // false, ссылки на разные объекты в куче
const a : string = 'abc'
const b: string = 'abc'
a==b // true, сравниваются значения на стеке
Но вот парадокс TypeScript
const a: String = 'abc'
const b: String = 'abc'
a==b // true
Почему? Я ведь явно указал тип String - а это обьект, ссылочный тип. Почему он ведёт себя как значимый в этом случае?
Нет
оффтоп: никакой прямой связи между расположением объекта в памяти и реализацией эквивалености нет (в любом языке фактически) и то что примитивы часто лежат на стеке это просто оптимизация GC фактически, её может и не быть в теории
Обсуждают сегодня