Работая несколькими языками программирования очень быстро привыкаешь к определенному поведению, и ожидаешь, что, возможно с разным синтаксисом, но однотипные задачи будут приводить к одинаковому результату. Например, замена в строке – что может быть проще: у строк обычно есть метод replace, который заменяет вхождение одной строки на другую и это одинаково работает в с, c#, pascal, python, но вот создателям ява-скрипта показалось это неправильным – да, у строк есть метод replace, но заменяет он только первое вхождение искомой строки, а для замены всех вхождений есть, нет, не метод replaceAll, а есть какой странный синтаксис:
str = str.replace('find','replace') // замена только первого вхождения
str = str.replace(/find/g,”replace”) // аналог replaceAll или просто привычное поведение функции