2016-05-14 1 views
1

Lorsque transpiling cette fonction dans ES5 de ES6 (en utilisant Babel) Je ne m'y attendais pas à changerinattendue Transpile ES6> ES5

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

, mais il est devenu

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

Pourquoi est-ce et comment cela affecte-t-il l'utilisation de la fonction, voire pas du tout? Même si cela n'affecte pas l'utilisation, y a-t-il quelque chose que je devrais savoir? Merci.

+0

Est-ce une question babel? – YOU

+2

Babel fait exactement ce que ES6 spécifie: Toutes les expressions de fonctions anonymes assignées à quelque chose sont nommées. – Bergi

+0

Si cela affectait l'utilisation, Babel ne le ferait pas. – Bergi

Répondre

1

Cela n'affecte pas l'utilisation de la fonction, mais donne à la fonction un moyen de se référencer elle-même.

Dans l'extrait suivant, notez que j'appelle récursivement ff - qui est local uniquement pour cette fonction, tandis que je l'appelle en utilisant func. Le résultat est: C'est inoffensif, et vous pouvez l'ignorer.

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

 
}; 
 

 
func(10);