Какая разница между.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]
.