Это потому, что был заменен только один пробел. Согласно спецификации JavaScript 1.5, String.replace()
принимает регулярное выражение в качестве первого параметра, а поведение строковых параметров не определено. Позднее браузеры решили обрабатывать строки аналогично - но нет способа указать флаг g
для строки, поэтому выполняется только одна замена. Это будет делать то, что вы хотите:
string = string.replace(/ /g, '');
Однако версия, предоставляемая Pointy (/\s+/g
), может быть более эффективной. И он заменит другие типы пробелов (табуляции, переносы строк).