Какая разница между.substr(0,1) или.charAt(0)?

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

Является ли каждый из них быстрее, чем другой?

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

Максимум

Ответ 1

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

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

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

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

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

Ответ 2

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