Что выведет код Junior Типы и приведение обновлено

Строки неизменяемы

Вопрос

Что выведет код? По строке на каждый вывод.

'use strict';
let s = 'abc';
try { s[0] = 'z'; } catch (e) { console.log(e.constructor.name); }
console.log(s);
console.log(s.toUpperCase(), s);

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: TypeError, abc, ABC abc. Почему так Строка - примитив: присваивание по индексу в обычном режиме молча игнорируется, в строгом бросает TypeError.

Что выведет

TypeError
abc
ABC abc

Разбор

Почему так

Строка - примитив: присваивание по индексу в обычном режиме молча игнорируется, в строгом бросает TypeError. Все методы строк возвращают новое значение, исходное не меняется.

Вывод

TypeError
abc
ABC abc

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме