Что касается второй проблемы, JSlint рекомендует ее, потому что переменные javascript всегда имеют область действия, а не область действия блока. Делая это:
function func(){
var i;
alert('foo');
for(i = 0; i<3; i++){
alert(i);
}
alert(i);
}
точно (100% точно!!) такой же, как:
function func(){
alert('foo');
for(var i = 0; i<3; i++){
alert(i);
}
alert(i);
}
Таким образом, i
не предназначен для (как и в других языках). Вот почему jslint рекомендует помещать все переменные поверх функций, чтобы вы не запутались, думая, что есть переменные с блочной областью видимости.
Уважаю первый вопрос, согласен с вами. Я не вижу в этом большой проблемы. Но JSLint видит в этом проблему, потому что, если вы позже добавите строки в свой оператор if и забудете поставить фигурные скобки, у вас будет логическая ошибка, как указал Джефф.
До:
if (x > 10)
alert("it's obvious x is positive");
После некоторых изменений в коде:
if (x > 10)
alert("it's obvious x is positive");
alert("x is greater than 10"); //Logic error
Проблема, которая не возникла бы при использовании фигурных скобок.
person
Edgar Villegas Alvarado
schedule
01.05.2011