Frage

Ich frage mich, wie Googles Verschluss -Compiler funktioniert. Kann ich zum Beispiel Funktionsaufrufe wie:

if (MyApp.isArray(...)) {
    // foobar
}

zur tatsächlichen Implementierung:

if ((typeof sthing === 'Object' && sthing.constructor.toString().indexOf("Array") !== -1))

Ich frage das, weil ich viele Wrapper habe, die einige Funktionen verbinden, und ich möchte, dass der Verschluss -Compiler sie wieder in einen Funktionsanruf umwandelt.

Macht ein zusätzlicher Funktionsaufruf eine App sichtbarer sichtbarer?

War es hilfreich?

Lösung

Macht ein zusätzlicher Funktionsaufruf eine App sichtbarer sichtbarer?

Höchstwahrscheinlich nicht, aber wenn Sie wirklich wissen möchten, dass Sie nur Ihre beiden verschiedenen Code -Beispiele ausprobieren und sehen müssen, ob es einen Unterschied gibt. Es gibt viele Faktoren (Ihr System, Ihr Browser, die Funktion, die Sie aufrufen usw.). Ein Test ist also der richtige Weg. Ich würde vorschlagen Firebug zum Profiling.

Andere Tipps

Der Verschlusskompiler (im erweiterten Modus) wird inline-Einzeilenfunktionen oder Funktionen, die genau einmal bezeichnet werden.

Anscheinend ist es für die Compiler-Autoren im ersten Fall wirtschaftlicher, einen Funktionsaufruf zu sparen, und eine Zeilenfunktionen sind normalerweise kurz genug, um in der Länge wie der Funktionsaufruf ähnlich zu sein. Im zweiten Fall vermeidet es einen Funktionsaufruf und ist kürzer. Dies ist ein klarer Gewinn.

Soweit ich weiß, sind Inline-Funktionen, die mehr als eine Zeile sind oder mehr als einmal genannt werden. Dies soll anscheinend Code aufblähen.

Ich habe von Leuten gehört, die das sagten lang Ein-Liner-Funktionen sind nicht auskleidet, aber ich habe sie immer in Linien gesehen.

Ich glaube nicht, dass es sowieso den Verschluss -Compiler für Sie tun kann. Es liegt im Mittelpunkt, die Quelle zu minimieren, und soweit ich das beurteilen kann, wird sie nur so aufruft, wenn es tatsächlich kürzer ist, dies zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top