@vetalmatitskiy
testing engineer

JavaScript code style. Стоит ли использовать объявления переменных внутри цикла?

Доброго дня, уважаемые гуру JavaScript. Помогите, пожалуйста, разобратся с вопросом о допустимости объявления перменных внутри цикла. В книгах авторитетных авторов обычно рекомендуется все переменные внутри функции объявлять внутри одного блока var, что-то в стиле
var url, price, i, j;
при этом на известных ресурсах, например javascript.ru в примерах часто используют варианты
for (var i=0;i<10; i++) {}
Есть ли какие-то стандарты в плане промышленного кодирования, о том какой вариант предпочтительнее,?
  • Вопрос задан
  • 1074 просмотра
Пригласить эксперта
Ответы на вопрос 4
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Конечно, кажется что, выносить в начало функции переменную i - глупо. Но стоит дать ей осмысленное название (itemIndex, например или что-то более конкретное) и разбить код на небольшие функции, как все предрассудки исчезают.
Ответ написан
sarkis-tlt
@sarkis-tlt
Full Stack Web Developer (ReactJS/MeteorJS/NodeJS)
в es6 есть крутая штука let, вот ее стоит использовать для обьявления переменных в цикле, это лучше чем var и не нужно заморачиваться с замыканием.

если же говорить про es5 то да, для цикла переменную лучше обьявлять внутри цикла, а не до или вне функции. Ну и к тому же это наиболее распростроненный и удобный стиль.
Ответ написан
Комментировать
for (var i = 0; i < 10; i++) { }


В данном случае, переменная var i объявлена не в теле цикла, а в его условии – по крайней мере, острой необходимости в микрооптимизации здесь нет.
А относительно стиля, можно сказать что такой вариант наболее читаемый.
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
В текущем ES5 я все переменные выношу в общий var.
С точки зрения движков браузеров это ничем не лучше, ибо все ровно видимость переменной на всю функцию , но, ИМХО, читаемость выше и контролировать набор переменных проще, включая рациональность их использования, чем ловить их по телу функции, кто и где там var объявил и не продублировал ли где. Вполне возможно, что переменная счетчика будет использоваться повторно, если код синхронный. Так что никаких var в циклах у меня нет.
Тут сколько программистов - столько и code style. Я еще в var переменные разбиваю по функциональных группах:
var url, 
    price, weight,
    x, y;

  for (x = 0; x < 10; x++) {
    for (y = 0; y < 10; y++) {

    }
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы