Тернарный оператор в JavaScript с несколькими выражениями?

the_styles ? the_styles.appendTo('head'); the_styles=null : the_styles = $('.stylesheet').detach();

Очевидно, это не допустимо. Заметьте""; между appendTo() и the_styles=null. Как я пишу это на 1 строке и все еще имею несколько выражений как этот?

11
задан Oscar Godson 2 July 2010 в 18:14
поделиться

6 ответов

Используйте оператор запятой следующим образом:

the_styles ? (the_styles.appendTo('head'), the_styles=null) : the_styles =  $('.stylesheet').detach();

Вот что пишет об операторе запятой Mozilla Developer Center:

Вы можете использовать оператор запятой, когда хотите включить несколько выражений в место, требующее одного выражения. Наиболее часто этот оператор используется для ввода нескольких параметров в цикле for.

Подробнее читайте здесь: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Comma_Operator

21
ответ дан 3 December 2019 в 02:29
поделиться

Кому нужен тернарный оператор?

​the_styles = !the_styles && $('.stylesheet').detach()​​​​ ||
             the_styles.appendTo('head') && null;​

Пришлось поменять местами выражения, иначе значение null первого выражения всегда заставит второе выражение . detach () для оценки.

Единственное, что есть в умном коде, - это то, что если вы вернетесь к нему после перерыва на кофе, он не будет иметь никакого смысла даже для вас. Так что это намного лучше:

if(the_styles) {
    the_styles.appendTo('head')
    the_styles = null;
}
else {
    the_styles = the_styles.detach('.stylesheet');
}

Для меня даже приведенная выше упрощенная версия не имеет никакого смысла. Часть what очевидна, но почему это делает?

8
ответ дан 3 December 2019 в 02:29
поделиться
the_styles ? the_styles.appendTo('head') : the_styles = $('.stylesheet').detach();

вам не нужно обнулять его, если вы его перезаписываете!

0
ответ дан 3 December 2019 в 02:29
поделиться
the_styles=the_styles || $('.stylesheet').detach(); the_styles.appendTo('head');
0
ответ дан 3 December 2019 в 02:29
поделиться

Я согласен со световым кодером, но если он вам все еще нужен:

the_styles ? function(){ the_styles.appendTo('head'); the_styles=null;}() : the_styles = $('.stylesheet').detach();
1
ответ дан 3 December 2019 в 02:29
поделиться
the_styles ? (function() {the_styles.appendTo('head'); the_styles=null})() : <etc>

Просто заключите кодовый блок в (function () { и }) () .

А теперь самое сложное: зачем вам это нужно? Возможно, есть лучшее решение!

2
ответ дан 3 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: