Тернарный оператор с операторами return JavaScript

мне нужно вернуть true или false, если выбрана опция в раскрывающемся списке.

Это мой код:

var active = sort.attr('selected') ? return true : return false;

Я получаю ошибку, что первый return неожиданное.

почему?

5 ответов


нельзя назначить переменной оператор return. Если вы хотите active присваивается значение true или false, просто удалить returns:

var active = sort.attr('selected') ? true : false;

или, может быть, лучше:

var active = sort.prop('selected');

С .prop всегда возвращает true или false, независимо от начального атрибута тега.


вы можете вернуться из тернарного оператора в javascript следующим образом:

return sort.attr('selected') ? true : false;

почему не просто так?

 return sort.attr('selected');

просто комментарий к вашему коду:

> sort.attr('selected')

кажется, использует jQuery attr метод, который использовал, чтобы попытаться угадать, что вы хотели, и вернуть атрибут или свойство. Я думаю, что в последних версиях он всегда возвращает атрибут.

в любом случае, наличие избранные атрибут означает только, что элемент (элемент option?) является по умолчанию выбранная опция, это не значит, что это в настоящее время выбранный вариант. Для этого вам нужно выбрать свойства (jQuery prop метод). И с тех пор избранные свойство является логическим:

> sort.attr('selected') ? true : return false;

можно просто:

 sort.prop('selected');

или без jQuery:

 optionElement.selected;

документы:

синтаксис
condition ? expr1 : expr2
параметры
условие (или условия) Выражение, которое принимает значение true или false.
expr1, expr2
Выражения со значениями любого типа.

вы должны обратить внимание на Expressions with values of any type. тег return xxx - это не выражение.

из Википедии:

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

так, в вашем случае вы можете использовать:

return sort.attr('selected') ? true : false