В чем разница между .substr (0,1) или .charAt (0)? - PullRequest
13 голосов
/ 05 июля 2011

В этом потоке нам было интересно, существует ли реальная разница между использованием .substr(0,1) и .charAt(0), когда вы хотите получить первый символ (на самом деле, это может относиться кв любом случае, когда вам нужен только один символ).

Один из них быстрее, чем другой?

Спасибо за ваши ответы!

Макс

Ответы [ 2 ]

16 голосов
/ 05 июля 2011

Измерение - это ключ!

Перейдите к http://jsperf.com/substr-or-charat, чтобы самостоятельно оценить его.

substr (0,1) работает на моей машине со скоростью 21 100 300 операций в секунду, charAt (0) выполняется 550 852 974 раза в секунду.

Я подозреваю, что charAt обращается к строке как к массиву внутри, а не разделяет строку.

Как указано в комментариях, прямой доступ к символу с использованием строки [0] немного быстрее, чем с использованием charAt (0).

5 голосов
/ 05 июля 2011

Если весь ваш сценарий не основан на необходимости быстрого манипулирования строками, я бы не стал беспокоиться о производительности.Я бы использовал charAt() на том основании, что он читабелен и является наиболее конкретным инструментом для работы, предоставляемой языком.Кроме того, substr() не является строго стандартным, и хотя вряд ли какая-либо новая реализация ECMAScript пропустит его, это может произойти.Основанные на стандартах альтернативы str.charAt(0): str.substring(0, 1) и str.slice(0, 1), а для реализаций ECMAScript 5 str[0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...