iNext10
@iNext10
Web Developing (Front End) Junior

Вопрос насчёт метода «replace», в чём дело?

Искал задачки в интернете и решал их, наткнулся на такое:
Суть задачи в том, чтобы заменить все '@' на '!' в строке 'aaa@bbb@ccc'

Я пришёл к такому коду:
let str = 'aaa@bbb@ccc';
str.replace('@', '!');
console.log(str);


В консоле ничего не меняется, всё также выводится 'aaa@bbb@ccc'
Но если немного поменять код:
let str = 'aaa@bbb@ccc';
console.log(str.replace('@', '!'));


Получилось! Но почему? Ведь и там и там, теоретически, код одинаковый
Возможно это я туплю?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
@faradeifrontend
Использую пробелы для отступов ;)
Этот метод не изменяет объект String, на котором он вызывается. Он просто возвращает новую строку.
https://learn.javascript.ru/string#stroki-neizmenyaemy
+ для замены всех @ используй флаг /g , без него только 1ое вхождение изменится
let str = 'aaa@bbb@ccc';
str = str.replace(/@/g, '!');
console.log(str);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ArsenyMatytsyn
@ArsenyMatytsyn
CEO iAmStudio, предприниматель.
Читай документацию. Там буквально в первом абзаце все.
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Некоторые методы меняют объект, к которому применяются. Например, сортировка массива arr.sort() изменит исходный массив, переставив в нём элементы.

Другие методы не меняют объект, а возвращают результат. Тот же str.replace() не меняет str, а берёт её как входной аргумент и возвращает новую строку.

В документации всегда пишут, что делает метод, изменяет ли он объект и что он возвращает.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы