Я хотел бы знать, если при сравнении двух (потенциально массивных) строк, 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.
И я думаю, что это отвечает на вопрос