2016-05-14 5 views
1

Wenn transpiling diese Funktion in ES5 von ES6 (unter Verwendung von Babel) habe ich nicht erwarten, dass esUnerwartete Transpile ES6> ES5

var func = function(msg){ 
    alert(msg); 
} 

zu ändern, aber es wurde

var func = function func(msg) { 
     alert(msg); 
}; 

Warum ist das und wie Beeinflusst es die Verwendung der Funktion, wenn überhaupt? Auch wenn es keinen Einfluss auf die Nutzung hat, sollte ich etwas wissen? Danke.

+0

Ist das eine Frage zu babel? – YOU

+2

Babel tut genau das, was ES6 spezifiziert: Alle anonyme Funktionsausdrücke, die einem Objekt zugewiesen sind, erhalten einen Namen. – Bergi

+0

Wenn es die Verwendung beeinträchtigen würde, würde Babel es nicht tun. – Bergi

Antwort

1

Es hat keinen Einfluss auf die Verwendung der Funktion, aber es gibt der Funktion eine Möglichkeit, sich selbst zu referenzieren.

Im folgenden Codeausschnitt beachten Sie, dass ich rekursiv ff aufrufen - die nur für diese Funktion lokal ist, während ich es mit func aufrufen.

Das Fazit ist: Es ist harmlos, und Sie können es ignorieren.

var func = function ff(t) { 
 
    if (t === 0) { 
 
    console.log("Countdown down"); 
 
    } else { 
 
    console.log("Counting down", t); 
 
    ff(t - 1); 
 
    } 
 

 
}; 
 

 
func(10);