Объявление переменной «i» вне оператора for для цикла for ускорит выполнение цикла, что является причиной этого? - PullRequest
0 голосов
/ 26 июня 2019

Я думаю, что объявление переменной i внутри оператора будет выполнено только один раз, и на следующей итерации переменная i будет увеличиваться на единицу и сравниваться с arr.length независимо от первого аргумента в операторе for, то есть втаким образом, мы делаем объявление вне (для оператора), чтобы не делать его циклом. Обратите внимание, что этот шаг будет игнорироваться циклом на каждой итерации, поэтому как это поведение может ускорить выполнение forпетля?

var i;
var l = arr.length;
for (i = 0; i < l; i++) {

1 Ответ

1 голос
/ 26 июня 2019

Объявление i с var вне цикла не повлияет на производительность из-за подъема переменной в JS.

Однако приписывание длины массива переменной l повышает производительность по сравнению с for (i = 0; i < arr.length; i++) {, поскольку нет необходимости обращаться к свойству length каждый оборот цикла.

ПРИМЕЧАНИЕ , что вы также можете использовать этот синтаксис, поскольку первая часть объявления for выполняется только один раз: for (var i = 0, l = arr.length; i < l; i++) {

ТАКЖЕ Я лично предпочитаю объявить это вне цикла, потому что люди, которые не очень хорошо знают JS, могут поверить, что var ограничен циклом for, что не так. (по сравнению с let). Смотрите также комментарий CertainPerformance.

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