Eloquent JavaScript говорит строковые значения неизменны, как ответ на первый вопрос, StackOverflow в: Understanding Javascript immutable variableEloquent JavaScript: неизменная струна значения
Но если мы напишем следующее: var string = "hello world"; string = "permitted";
, строка действительно изменяется.
Ответ, о котором я упоминал выше, просто объясняет, что объекты изменяемы, а не другие значения.
Поскольку строка может быть изменена, как я уже говорил вам выше, означает ли это, что примитивное значение строки автоматически преобразуется в объект, когда ему присваивается значение «=»?
Таким образом, предыдущий код был бы строго эквивалентен: var string = new String("hello world"); string = new String("permitted")
. Это объясняет, почему значение строки изменяется.
Вы можете перезаписать переменную, но вы не можете изменить строку, например 'string.replace (something) 'создает новую строку, она ** не может ** изменять строку, потому что она * неизменная *. – adeneo
Но вы не изменяете строку. Вы просто назначаете новую строку этой переменной. –
@NiettheDarkAbsol: Да, я согласен с вами. Это действительно происходит? –