Обновление июнь 2017: При условии поддержки (например, если вы не используете JavaScript в Internet Explorer 10 или ниже), вам следует использовать let вместо вар .
Например: for(let i=0; ...; i++)
Нет никакого способа, которым я собираюсь поставить var i;
из for(var i=0; ...; i++)
в верхней части моих функций. Особенно, когда Спецификация JavaScript имеет приемлемый синтаксис в разделе for
(12.6). Кроме того, это синтаксис, который Брендан Айх использует в своих примерах.
Идея перемещения декларации в верхнюю часть состоит в том, что она должна более точно отражать то, что происходит под колпаком, однако это будет только отражать, а не влиять.
Для меня это нелепое ожидание для for
итераций. Тем более что JSLint останавливает обработку, когда обнаруживает ее.
ли имеющие переменные, объявленные в верхней части функции является более удобным для чтения является дискуссионным. Я лично предпочитаю объявлять переменные итератора при их использовании. Мне все равно, если переменная уже создана внутри, я инициализирую ее здесь, поэтому я в безопасности.
Я бы сказал, что объявление переменной итератора, в которой они используются, гарантирует, что они не будут случайно сделаны глобальными (если вы перемещаете цикл в другую функцию, переменная итератора перемещается вместе с ней). Это гораздо удобнее, чем поддерживать объявления переменных в верхней части функций.
На данный момент я использую http://www.javascriptlint.com/online_lint.php, потому что он, кажется, фокусируется на важных вещах.