2016-04-16 18 views
1

Wie wir alle wissen, das folgende die a() Funktion so die Warnfeld nichtJS - Zuweisung Funktion Variable

// 1st 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
};

und wir scheinen nicht ausgeführt weiß, dass der folgende Code die a() Funktion und Alarmbox 'A!' erscheint

// 2nd 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
}; 
 
a(); // calling function

jedoch, wenn wir laufen folgenden Code, der a() Funktion wird und Warnfeld aufgerufen werden 'A!' wird auch, genau wie der zweite Code oben

// 3rd 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
}; 
 
var x = a(); // assigning function to new variable

FRAGE erscheinen: warum diese (am 3. Snippet) passiert das? Wir haben die Funktion a() noch nicht aufgerufen (mein derzeitiges Verständnis). Haben wir nicht einfach x einer a-Funktion zugewiesen?

+0

'()' dies wird die Funktion aufrufen.Und wird den Rückgabewert dieser Funktion 'x' zuweisen. –

+0

Alles mit Klammern'() 'findet die Funktion/Methode dieses Namens und ruft sie auf ... Egal wo du schreibst! – Rayon

+1

* Wir haben die a() Funktion nicht aufgerufen * - ja du hast – Pointy

Antwort

5

Haben wir nicht einfach x einer a-Funktion zugewiesen ?.

Nein, Sie haben den zurückgegebenen Wert von a() zu x zugewiesen.

Wenn Sie a nicht nennen wollen, dann tun

var x = a; 

und

x(); 
+0

GENIUS, danke für deine Erklärung. – xcode

1

Du irrst dich später tun. Sie Aufruf der Funktion:

var x = a(); // assigning function to new variable 

Diese Codezeile sagt a aufrufen, wenn Sie a() schreiben. Die Klammern zeigen einen Aufruf an.

Um eine Funktion einer Variablen zuweisen Sie einfach den Namen, wie zum Beispiel verwenden:

var x = a; 

oder übergeben Sie den Namen einer Funktion f:

f(a) 

Als Gegenbeispiel Sie rufen es in dieser nächsten Codezeile auf und übergeben an g nicht die Funktion, die das Ergebnis seiner Ausführung ist:

g(a()) 
Verwandte Themen