Warum Optionen ["foo"] || options.foo?

8

Ich lese den knockout.js-Quellcode durch diese Zeile

%Vor%

Ich habe das noch nie gesehen und alles, was ich über Javascript weiß, sagt, dass es keinen Fall gibt, wenn die beiden Seiten von || anders wären. Warum könnte das KO-Team dieses Konstrukt benutzen?

    
George Mauer 17.02.2014, 05:35
quelle

1 Antwort

2

Dies ist das Ergebnis von Symbolmangulationen, die vom Closure Compiler ausgeführt werden. In den Closure-Compiler-Dokumenten :

  

Closure Compiler-Kompilierung ändert niemals String-Literale in Ihrem Code, nein   Egal welche Kompilierungsstufe Sie verwenden. Dies bedeutet, dass die Kompilierung mit   ADVANCED_OPTIMIZATIONS behandelt Eigenschaften unterschiedlich abhängig davon, ob Ihre   Code greift auf sie mit einem String zu. Wenn Sie Zeichenkettenreferenzen mit einer Eigenschaft mischen   Bei Dot-Syntax-Referenzen benennt Closure Compiler einige der Referenzen auf   diese Eigenschaft, aber nicht andere. Daher wird Ihr Code wahrscheinlich nicht ausgeführt   richtig.

Die Verwendung der Punktsyntax und des Zeichenfolgenliterals ist die "sichere" Möglichkeit, dies zu umgehen, da dadurch sichergestellt wird, dass ein Client, der einen nicht exportierten Teil der API verwendet, aber nicht den Abschlusscompiler für seinen eigenen Code verwendet Probleme.

    
MischaNix 17.02.2014, 06:28
quelle

Tags und Links