Почему некоторые функции JavaScript требуют создания новой переменной, а другие нет?

1

Почему некоторым функциям, например toLowerCase() при использовании в строке, должна быть назначена новая переменная, но другие функции, такие как sort(), reverse() или pop(), не используются в массиве?

Например, приведенный ниже код неправильный:

var str = "Hello World";
str.toLowerCase();

но приведенный ниже код верен:

var arr = ["This","is","my","array"]
arr.sort();

Я читаю, что при использовании toLowerCase() в строке я должен иметь код, написанный следующим образом:

str = str.toLowerCase();
Теги:
sorting
in-place

1 ответ

4
Лучший ответ

Поскольку строки являются неизменяемыми в JavaScript, это означает, что вы не можете их изменить. Каждый раз, когда вы пытаетесь изменить строку, вы фактически создаете новую строку с изменениями.

Поэтому, когда вы делаете str.toLowerCase(); , он не модифицирует str, на самом деле делает копию его в нижнем регистре букв.

Массив отличается, потому что это список ссылок на элементы массива. Вы можете изменить каждый элемент отдельно от других пунктов arr[5]=11. Вы также можете добавить или удалить элемент. Функции sort() и reverse() переупорядочивают элементы массива.

Кстати, эта концепция не уникальна для JavaScript. Многие другие современные языки также делают строки неизменяемыми (возможно, все языки, которые имеют String как встроенный тип).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню