Почему некоторые функции JavaScript требуют создания новой переменной, а другие нет?
Почему некоторые функции, такие как toLowerCase()
при использовании на строку необходимо назначить новую переменную, но другие функции, такие как sort()
, reverse()
, или же pop()
не при использовании на массиве?
Например, приведенный ниже код неверен:
var str = "Hello World";
str.toLowerCase();
но код ниже верен:
var arr = ["This","is","my","array"]
arr.sort();
Я читаю это при использовании toLowerCase()
на строке, я должен иметь код, написанный следующим образом:
str = str.toLowerCase();
1 ответ
Поскольку строки являются неизменяемыми в JavaScript, это означает, что вы не можете их изменить. Каждый раз, когда вы пытаетесь изменить строку, вы фактически создаете новую строку с изменениями.
Итак, когда вы делаете str.toLowerCase();
не изменяет str
, это на самом деле делает копию с строчными буквами.
Массив отличается тем, что представляет собой список ссылок на элементы массива. Вы можете изменить каждый элемент отдельно от других элементов arr[5]=11
, Вы также можете добавить или удалить элемент. sort()
а также reverse()
функции переупорядочивают элементы в массиве.
Кстати, эта концепция не уникальна для JavaScript. Многие другие современные языки также делают строки неизменяемыми (возможно, все языки, которые имеют String
как встроенный тип).