#javascript #string #hex #ascii
#javascript #строка #hex #ascii
Вопрос:
В исходном коде здесь: https://github.com/pillarjs/parseurl/blob/master/index.js#L96
if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {
// ...
}
Автор использует str.charCodeAt( 0 ) !== 0x2f
, чтобы проверить, начинается ли строка с косой черты (/), я хочу знать различия между различными способами ниже:
str.charCodeAt( 0 ) === 0x2f;
str.charCodeAt( 0 ) === 47;
str.startsWith( '/' );
Спасибо.
Ответ №1:
В современной среде все они одинаковы.
Я полагаю, что кто-то может использовать 0x2f
версию, если он хорошо знаком с шестнадцатеричными кодами символов ASCII (в большей степени, чем с десятичными знаками).
Одна из потенциальных проблем с startsWith
версией заключается в том, что она требует String.prototype.startsWith
, чего не существует в старых средах, таких как Internet Explorer. Использование charCodeAt
будет немного совместимо со случайным пользователем.
IMO, более понятной альтернативой при сохранении обратной совместимости было бы:
str.charAt(0) === '/'
или
str[0] === '/'