2015-11-16 2 views
0

Нужно ли добавлять инструкцию if/else при объявлении переменной внутри функции? Можно ли сначала задать переменную, а затем изменить ее, если условие выполнено?Объявление переменной, а затем ее изменение с помощью оператора if?

function doSomething() { 
    var a = 1; 
    if(something) { 
    a = 2; 
    } 
} 

против

function doSomething() { 
    var a; 
    if(something) { 
    a = 2; 
    } else { 
    a = 1; 
    } 
} 
+0

Пробовали ли вы его? –

+2

Переверните вопрос: почему * не будет * он работает? Все, что делает машина, это то, о чем вы говорите, - что случилось, когда вы попробовали? –

+0

(Несвязанный, но несколько человек предлагают условный оператор («тройной»), но ... meh. Особенно при запуске ИМО достаточно простого утверждения 'if'. –

ответ

2

Нет, это не обязательно, если оценивать второе значение в инициализации не имеет побочных эффектов (в вашем случае, буквальное 1, он не имеет ни одного).

Однако использование if-else может показать ваше намерение лучше и сделать код более чистым; хотя это скорее вопрос стиля, чем функциональность. Лично я бы предпочел условное выражение:

var a = condition ? 2 : 1; 
3

Да, вы можете это сделать (технически). Что касается понимания или сложности кода, держите его как можно проще.

Я думаю, что ваши намерения были бы еще более ясным, если вы использовали условный оператор:

var a = something ? 2 : 1; 
0

Да, вы можете сделать это - еще короче, как этот

var a = 1; 
if (something) a = 2; 
+0

За исключением того, что вы никогда не должны опускать скобки блока, конечно! (Если вы хотите записать его в одной строке, напишите 'if (something) {a = 2;}'.) – cdhowie

+0

Нет причин всегда класть блок в фигурные скобки. Я никогда не ставил заявление на ту же строку, что и если бы, хотя бы в особых обстоятельствах. – blm

+0

@blm Если вы * не * поместите его в ту же строку, вы, вероятно, должны * использовать фигурные скобки; плохая гигиена вдавливания и «но я имею в виду, что быть в условном коде» - это все * слишком легко. Особенно для начинающих. –

Смежные вопросы