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?
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 return
s:
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.
Vous pouvez revenir d'un opérateur ternaire en javascript comme ceci:
return sort.attr('selected') ? true : false;
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;
À 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