2016-12-08 2 views
0

Ich bin auf einem Legacy-JS-Skript arbeiten:Was bedeutet das Js Schnipsel bedeutet eine frisch deklarierte Variable mit nicht definierten Methode Rückkehr

!function(e, t) { 
var a = function() { 
     return new a.init 
    }, 
...... 
//end of JS script 1800 lines later 
a.init.prototype = a.prototype, e.PDC = a 
}(window, jQuery); 

ich weiß, dass! ist eine Möglichkeit, ein IIFE zu deklarieren, aber die erste Variablendeklaration verstehe ich nicht, weil die init-Methode der Variablen a noch nicht deklariert ist!

+1

Haben Sie eine geschweifte Klammer weggelassen? Zwei offene, aber drei enge – fafl

+0

Ich habe die Klammer weggelassen, es gibt eine Reihe von Funktionen im Inneren definiert, ich hoffe, es gibt genug für Sie, um darüber zu argumentieren, das Skript ist sehr groß –

+0

Link zu vollständigen Skript könnte helfen –

Antwort

0

Die Werte von Variablen innerhalb einer Funktion werden erst beim Aufruf der Funktion nachgeschlagen.

Da return new a.init, es spielt keine Rolle, dass a ist undefined (es ist erklärt), wenn die Funktion erstellt wird, wird es dauern, bis die Funktion genannt wird.

+0

oh ich sehe danke für die erklärung –