Я всегда считал, что кэширование длины массива в JavaScript - это хорошая идея (особенно в условиях цикла for
) из-за дороговизны вычисления длины массива.
for (var i = 0; i < arr.length; i++) { }
// vs
for (var i = 0, arrLength = arr.length; i < arrLength; i++) { }
Однако я подумал, что, возможно, свойство length
обновляется только при создании и изменении массива. Следовательно, его чтение не должно быть слишком затратной операцией, в отличие от чтения, хранящегося в переменной (в отличие от других методов на других языках, которым может потребоваться поиск в памяти, чтобы найти конец чего-либо, например strlen ( )
в C).
У меня два вопроса. Меня также интересует, как это работает, поэтому, пожалуйста, не ударяйте меня палкой преждевременной оптимизации .
Предположим, что в браузерах используются движки JavaScript.
length
массива в JavaScript? Есть ли что-то большее, чем требуется для чтения локальной переменной свойства объекта? length
просто при создании и при shift ()
и pop ()
методы типа, которые не возвращают новый массив и в противном случае просто хранятся как целое число?