Wie erstellt man einen CoffeeScript-Stil als existentiellen Operator in JavaScript?

8

CoffeeScript verwandelt user?.id in

%Vor%

Ist es möglich, eine JavaScript-Funktion exists zu erstellen, die etwas ähnliches tun würde? d. h.

%Vor%

würde entweder user.id oder null

ergeben

Es wäre einfacher, wenn eine Funktion einen anderen Parameter akzeptiert, d. h. exists(user, 'id') , aber das würde nicht so gut aussehen.

    
guaka 27.06.2013, 11:05
quelle

2 Antworten

5

Nein, Sie können eine solche Funktion nicht erzeugen. Das Problem ist, dass dies:

%Vor%

erzeugt einen ReferenceError, wenn undeclared_variable nirgendwo deklariert wurde. Wenn Sie beispielsweise diesen Standalone-Code ausführen:

%Vor%

Sie erhalten einen ReferenceError, weil pancakes nirgendwo deklariert wurde. Demo: Ссылка

Der Operator typeof kann jedoch verwendet werden etwas, das nicht so erklärt wurde:

%Vor%

protokolliert einfach ein undefined in der Konsole. Demo: Ссылка

Wenn es Ihnen mögliche ReferenceErrors nicht stört, haben Sie bereits die notwendige Funktion in Ihrer Frage:

%Vor%

oder, da Sie typeof für nicht deklarierte Variablen hier nicht verwenden können, können Sie dies vereinfachen:

%Vor%

Beachten Sie, dass die Änderung in != , undefined == null wahr ist, obwohl undefined === null nicht lautet.

    
mu is too short 27.06.2013, 16:50
quelle
2

Sehr alte Frage, aber brachte mich dazu, über diese Lösung nachzudenken.

%Vor%     
Sudheer 19.12.2016 23:02
quelle

Tags und Links