2009-05-16 2 views
0

HI, Мне нужно написать несколько операторов внутри условного оператора.Несколько операторов внутри условного оператора

Что будет эквивалент этого, если условие с условным оператором

var name; 
var age; 
var passed; 

if (arg == "first") 
{ 
    name = "John"; 
    age = "25"; 
    passed = false; 
} 
else 
{ 
    name = "Peter"; 
    age = "29"; 
    passed = true; 
} 

ответ

2

Если вы находитесь в ситуации, когда вам нужно выполнять инструкции на основе логического условия, вы действительно должны использовать if-else. Условный оператор действительно предназначен для возврата значения из выражения, а не для выполнения полных операторов. Используя условный оператор, вы делаете свой код более трудным для чтения и более опасным для отладки.

Если вы настаиваете на использовании условного оператора, решение alamar, по-видимому, соответствует вашей потребности довольно хорошо. Тем не менее, я рекомендую вам энергично комментировать ваш код. В следующий раз, когда вам нужно будет изменить свой код, этот комментарий может быть разницей между 60 секундами, чтобы понять и принять 0,6 секунды, чтобы понять.

И если вы прокомментируете это, экономия полосы пропускания при использовании условного оператора с более короткими условными выражениями над оператором if-else не будет.

3

hmhm, вы имеете в виду тройной оператор?

var passed = arg == "first" 
    ? (name = "John", age = "25", false) 
    : (name = "Peter", age = "29", true); 

Моя быстрая проверка с помощью embedjs показывает, что она работает более или менее. Но почему? Зачем вам это нужно? Он будет квалифицироваться как крупный WTF.

+0

На самом деле мне нужно использовать их в ряде случаев. Поэтому я бы хотел избежать этих выражений if else и заменить их условными операторами. – rahul

+0

Итак, возьмите его, похоже, сработает – alamar

+6

В то время как троичный оператор работает в очень простых ситуациях, все, что выходит за рамки этого, уменьшит читаемость вашего кода. только для ваших коллег, но для себя (через несколько месяцев). Если вы уменьшите нагрузку на свой скрипт, используйте gzip на своем сервере и не беспокойтесь об этом. – Rashack

1

Если вам необходимо выполнить несколько операций как часть условной проверки, подумайте над созданием функции для кода, который вы указали, и вызовите эту функцию в своем коде, где вам нужна проверка. Это обеспечит вам четкость кода и вашу функцию понятным.

2

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

var obj = arg == "first" ? 
      { name : "John", age : "25", passed : false } : 
      { name : "Peter", age : "29", passed : true }; 

После этого, вы можете обратиться к имени, возрасту, и передается как OBJ .name, obj.age и obj.passed. В зависимости от того, как обычно вы используете эти три переменные вместе, вы можете захотеть сделать их реальным классом.

По сравнению с раствором alamar «s, это делает без побочных эффектов (за установкой OBJ, который, скорее всего, сделать проще код, чтобы поддерживать в долгосрочной перспективе.