2016-05-14 2 views
1

Когда transpiling эту функцию в ES5 из ES6 (используя Бабеля) Я не ожидал, что изменитьНеожиданное Transpile ES6> ES5

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

но он стал

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

Почему это и как влияет ли это на использование функции, если вообще? Даже если это не влияет на использование, есть ли что-нибудь, что я должен знать? Спасибо.

+0

Является ли это вопрос Бабеля? – YOU

+2

Babel просто делает то, что указывает ES6: все анонимные выражения функций, присваиваемые чему-то, получают имя. – Bergi

+0

Если это повлияет на использование, Бабель не сделает этого. – Bergi

ответ

1

Это не влияет на использование функции, но это дает функции способ ссылки на себя.

В следующем фрагменте обратите внимание, что я рекурсивно вызываю ff, который является локальным только для этой функции, а я вызываю его с помощью func.

Результат: это безвредно, и вы можете его игнорировать.

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

 
}; 
 

 
func(10);

Смежные вопросы