sinneren
@sinneren

Почему нельзя изменить строку в const, если строка в JS это массив?

Я знаю, что const \ let неизменяемые, но можно изменить свойство.
Допустим, у нас есть const test = 'test phrase'
Так как в JS строки этой массивы(ну,почти), то мы вполне можем получить test[0] /~ t
Однако, пытаясь таким образом переопределить значение элемента массива test[0] = j ошибки Assignment to constant variable мы не увидим, но и не изменим ничего. Почему? И возможно ли подобными ухищрениями изменить строку у const?

upd: ввиду критики терминологии, хорошо, перефразирую.
как "переопределить" строку в const, если мы имеем к ней доступ как к массиву, свойства которого в const изменить возможно.
  • Вопрос задан
  • 440 просмотров
Решения вопроса 1
@EEclipsEE
скажу вам больше. строку в var тоже нельзя изменить. Илюбые методы строк не меняют исходную строку. Ее можно только переопределить. Строки в js это псевдомассивы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Да это не критика терминологии была)) В описке "ну, почти" вы сами ответили на свой вопрос

В учебнике написано:
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.

Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:


ни с const, ни с var, ни с let вы не сможете изменить именно таким способом символ в строке. Но в строках, хранимых в var и let, можно юзать replace для этой цели. Зачем вам const там, где будут изменения?)

P.S. -
Я знаю, что const \ let неизменяемые, но можно изменить свойство.

let очень даже изменяемые )
Ответ написан
@vaskadogana
Frontend developer
не знаю почему нельзя, знаю, что const и придумали специально, чтобы была переменная которую нельзя перезаписать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы