Короткий ответ: иногда да, иногда нет.
Я также наткнулся на тот же вопрос и немного разбирался в нем.Кажется, что интернирование обычно выполняется для строковых примитивов, которые генерируются одинаковым образом (например, всегда присваивают одну и ту же строку переменной в одном и том же цикле), НО я также смог создать пример, который приводит к созданию двух идентичных строкс двумя разными ссылками:
![enter image description here](https://i.stack.imgur.com/9S4DX.png)
Как видите, каждая строка сохраняется дважды, имея разные ссылки.
Этокод, который я использовал для генерации дублирующих строк:
const a = [];
const b = [];
for(let j =1; j<= 100;++j){
for(let i = 1; i <= 10000; ++i) a[i] = 'player 1 got 5 points from player 2' + i;
for(let i = 1; i <= 10000; ++i) b[i] = 'player 1 got 5 points from player 2' + i;
}
Кажется, что интернирование строк выполняется для строковых примитивов, но не для конкатенированных строк, но, как вы можете видеть выше, каждая конкатенированная строка появляется только дважды, а не100x2 = 200 раз, поэтому для конкатнированных строк, созданных во внешнем цикле, все еще выполняется интернирование строк.