Правильный способ инициализации переменных в этом случае? - PullRequest
4 голосов
/ 30 марта 2012

Мне известно, что наиболее распространенной практикой было бы ставить var a,b; сверху, но я хочу извлечь все возможные символы (после запуска в JS Uglify), и, похоже, они не удаляют ненужную var инициализацию

Я хочу знать, не вызовет ли что-либо из нижеперечисленного проблемы, и что рекомендуется

Случай 1:

if(condition){
    var a=-1;
    var b="++";
}else{
    var a=1;
    var b="--";
}

Случай2:

if(condition){
    var a=-1;
    var b="++";
}else{
    a=1;
    b="--";
}

Дело 3:

if(condition){
    a=-1;
    b="++";
}else{
    var a=1;
    var b="--";
}

Ответы [ 2 ]

7 голосов
/ 30 марта 2012

Так и должно быть:

var a,b;

if(condition)
{
   a = -1;
   b = "++";
}
else
{
  a = 1;
  b = "--"
}

Переменные всегда должны быть объявлены в верхней части функции с ключевым словом var. Область видимости переменной находится на уровне функции, и отсутствие использования var делает ее глобальной переменной. Объявление его сверху всегда гарантирует, что вы знаете, что область действия предназначена для всей функции (и она в любом случае), поэтому, когда другой программист смотрит на нее и не знает, что область действия находится на уровне функции, он / она не запутается и думаю сфера только условная.

4 голосов
/ 30 марта 2012

Это не имеет значения, поскольку JavaScript имеет область действия, а не лексическую область.

Вы можете думать об этом как о каждом var ...; утверждении, которое шунтируется до верха функции, в которой они находятся. (По крайней мере, так я и делаю.)

Я бы написал код как

var a, b;
if(condition) {
    a = -1;
    b = "++";
} else {
    a = 1;
    b = "--";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...