2014-09-08 2 views
1

Могу ли я использовать тернарный оператор, если у меня есть несколько операций для каждого случая?Тернарный оператор с несколькими операциями

Например я могу использовать его здесь ?:

if (dwelling) { 
     dwelling = dwelling[0].nodeValue;  //first operation 
     letterDwelling = dwelling[0].toUpperCase(); //second operation 
} else { 
     dwelling = ""; 
     letterDwelling = ""; 
} 

Я только использовал этот синтаксис, который позволяет один последующая операция:

dwelling = dwelling ? dwelling[0].nodeValue : ""; 
+0

Можно указать несколько операторов, разделенная запятая : [смотрите здесь] [1] [1]: http://stackoverflow.com/questions/6678411/javascript-ternary-op erator-with-multiple-statements – Leyenda

ответ

1

Хотя я высоко совет против него ради читаемость и расширяемость вы можете:

dwelling ? (dwelling = dwelling[0].nodeValue, letterDwelling=dwelling[0].toUpperCase()) : (dwelling = letterDwelling = ""); 
2

Чтобы избежать побочных эффектов с помощью запятой обозначения можно использовать самоосуществляющиеся функции вместо, который может обрабатывать код:

(foo == bar) ? doSomething() : (function(){ 
    // here you can write all your code 
    // and even return something useful 
})(); 
+0

Является ли побочным эффектом вы говорите о том, где последнее значение в запятой - это назначенное значение? Цитируется из [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator#Description) "... последнее значение, разделенное запятыми в скобках, будет значение, которое нужно назначить ". Я не могу найти никаких других побочных эффектов. Хотя мне нравится этот ответ и думаю, что он намного красивее и проще в использовании, чем текущие решения! –

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