Opérateur ternaire avec instructions de retour JavaScript

Je dois retourner true ou false si une option dans une liste déroulante est sélectionnée.

C'est mon code:

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

Je reçois une erreur que le premier return est inattendu.

Pourquoi?

41
demandé sur Ben Fletcher 2013-10-18 03:47:49

5 réponses

Vous ne pouvez pas affecter une instruction return à une variable. Si vous voulez que active soit affecté à la valeur true ou false, supprimez simplement les returns:

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

, Ou peut-être mieux:

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

Puisque .prop renvoie toujours true ou false, quel que soit l'attribut de balise initial.

37
répondu 2013-10-18 04:23:01

Vous pouvez revenir d'un opérateur ternaire en javascript comme ceci:

return sort.attr('selected') ? true : false;
98
répondu George K 2014-04-15 16:56:37

Pourquoi pas juste ça?

 return sort.attr('selected');
8
répondu nightograph 2015-08-06 19:02:56

Juste un commentaire sur votre code:

> sort.attr('selected')

Semble utiliser le jQuery attr méthode, qui a utilisé pour essayer de deviner ce que vous vouliez et retourner l'attribut ou la propriété. Je pense que dans les versions récentes, il renvoie toujours l'attribut.

Quoi qu'il en soit, la présence de l'attributsélectionné signifie seulement que l'élément (un élément d'option?) est l'optionpar défaut sélectionnée, cela ne signifie pas que c'est la actuellement sélectionnée option. Pour cela, vous avez besoin de la propriété sélectionnée (jQuery prop méthode). Et puisque la propriété selected est un booléen:

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

Peut simplement être:

 sort.prop('selected');

Ou sans jQuery:

 optionElement.selected;
1
répondu RobG 2013-10-18 00:54:57

À partir des documents:

La Syntaxe
condition ? expr1 : expr2
Les Paramètres
condition (ou conditions) Une expression qui évalue à true ou false.
expr1, expr2
Expressions avec des valeurs de tout type.

Vous devriez faire attention à la Expressions with values of any type. le return xxx n'est pas une expression.

Wikipédia:

Une expression est une construction syntaxique, elle doit être bien formée: les opérateurs autorisés doivent avoir la bonne nombre d'entrées aux bons endroits, les caractères qui composent ces entrées doivent être valides, avoir un ordre clair des opérations, etc. Les chaînes de symboles qui violent les règles de syntaxe ne sont pas bien formées et ne sont pas des expressions mathématiques valides.

Donc, dans votre cas, vous pouvez utiliser:

return sort.attr('selected') ? true : false
1
répondu aircraft 2018-04-19 08:11:44