Почему некоторые функции 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 как встроенный тип).

Другие вопросы по тегам