При сравнении строк JavaScript начинается с сравнения их длины? - PullRequest
1 голос
/ 03 марта 2020

Я хотел бы знать, если при сравнении двух (потенциально массивных) строк, JavaScript внутренне начинается с сравнения их длины перед циклом по символам. строки

if (string1.length !== string2.length || string1 !== string2)
  // do something if data changed

должны привести к выигрышу во времени, верно? (Я предполагаю, что свойство length только для чтения строки вычисляется при задании строки, а не при запросе; не уверен, так ли это на самом деле)

Для контекста я имею дело с массивными строки как я ленивый JSON .stringification массивов объектов, полученных от некоторого API (сравнение только последнего элемента, вероятно, было бы лучше, но этот вопрос скорее из любопытства, чем что-либо еще, пожалуйста, только учтите, что строки, которые я бы сравнил, были бы огромными ^^)

Соответствующие ссылки?

https://javascript.info/comparison

Сравнение больших строк в JavaScript с ха sh

Редактировать

Спасибо @RobG в комментарии за ссылку на ECMA-262 SameValueNonNumber .

В определении шага шаг 5:

SameValueNonNumber (x, y)

5.Если тип (x) равен String, то если x и y точно такая же последовательность кодовых единиц (одинаковая длина и одинаковые кодовые единицы при соответствующих индексах), возвращает true в противном случае верните false.

И я думаю, что это отвечает на вопрос

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