2016-07-27 23 views
0

Ich möchte eine Funktion deklarieren, die eine IIFE sowie eine benannte Funktion ist, so dass es aufgerufen wird. Ich denke, ich kann in der folgenden Art und Weise dies tun:Javascript: Eine Funktion, die IIFE sowie Funktionsdefinition für die spätere Verwendung ist

var callme = (function callme(msg) { 
    console.log(msg); 
    return callme; 
})('i am called'); 

Die obige Funktion gibt „ich angerufen werde“ wegen IIFE. Und später kann ich es so nennen:

callme('i m called again'); 

Irgendwelche Kommentare auf diesem Weg? Oder kann dies auf andere Weise erreicht werden? Bitte kommentieren.

+0

Einfach eine Funktion separat deklarieren. Dann rufe es an. Sie brauchen IIFE nicht. – zerkms

+0

Was möchten Sie hier erreichen? Davon hängt viel ab. –

+2

Sieht für mich unnötig verwirrend aus. Ich würde mit einem einfachen 'Funktion Callme (msg) {} Callme ('ich bin genannt')' bleiben. Was versuchen Sie mit dem IIFE zu erreichen, das Ihnen eine Standarddefinition nicht bietet? – Rhumborl

Antwort

0

Ich bin nicht sicher, warum Sie es zunächst Ausführung - was Sie IIFE beschreiben ist nicht, es ist nur eine gute altmodische Funktion

function callMe(msg){ 
    console.log(msg); 
} 

callme("Hello"); // logs "Hello" 

Der Zweck eines IIFE sein könnte Teil des Aufrufs zu kapseln und Rückgabe eines Funktionszeigers

var callMe = (function(msgPrefix){ 
    return function(msgSuffix){ 
     console.log(msgPrefix + ' ' + msgSuffix); 
    } 
})("Hello"); 

callMe("World")// logs "Hello world"