webentwicklung-frage-antwort-db.com.de

Ternärer Operator mit Rückgabeanweisungen JavaScript

Ich muss true oder false zurückgeben, wenn eine Option in einer Dropdown-Liste ausgewählt wurde. 

Das ist mein Code:

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

Ich erhalte die Fehlermeldung, dass die erste return unerwartet ist.

Warum?

44
JDillon522

Sie können einer Variablen keine return-Anweisung zuordnen. Wenn active der Wert true oder false zugewiesen werden soll, löschen Sie einfach die returns:

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

oder vielleicht besser:

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

da .prop unabhängig vom ursprünglichen Tag-Attribut immer true oder false zurückgibt.

43
user2625787

Sie können von einem ternären Operator in Javascript wie folgt zurückkehren:

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

warum nicht gerade das?

 return sort.attr('selected');
8
nightograph

Aus den Dokumenten:

Syntax
condition ? expr1 : expr2
Parameter
Bedingung (oder Bedingungen) Ein Ausdruck, der als wahr oder falsch ausgewertet wird.
Ausdruck1, Ausdruck2
Ausdrücke mit Werten eines beliebigen Typs.

Sie sollten auf den Expressions with values of any type. Achten, der return xxx ist kein Ausdruck.

Von Wikipedia:

Ein Ausdruck ist ein syntaktisches Konstrukt. Er muss wohlgeformt sein: Die zulässigen Operatoren müssen die korrekte Anzahl von Eingaben an den richtigen Stellen haben, die Zeichen, aus denen diese Eingaben bestehen, müssen gültig sein, eine klare Reihenfolge der Operationen haben usw. Zeichenfolgen von Symbolen, die gegen die Regeln der Syntax verstoßen, sind nicht wohlgeformt und keine gültigen mathematischen Ausdrücke.

In Ihrem Fall können Sie also Folgendes verwenden:

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

Nur ein Kommentar zu Ihrem Code:

> sort.attr('selected')

scheint die jQuery attr -Methode zu verwenden, die früher versucht hat, zu erraten, was Sie wollten, und das Attribut oder die Eigenschaft zurückgibt. Ich denke, in den letzten Versionen gibt es das Attribut immer zurück.

Das Vorhandensein des Attributs selected bedeutet jedoch nur, dass das Element (ein Optionselement?) Die ausgewählte Option default ist. Dies bedeutet nicht, dass es sich um das ausgewählte derzeit handelt Möglichkeit. Dazu benötigen Sie die ausgewählte property (jQuery prop method). Und da die selected -Eigenschaft ein Boolean ist:

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

kann einfach sein:

 sort.prop('selected');

oder ohne jQuery:

 optionElement.selected;
1
RobG