[英]Babel arrow function compilation into ES5
使用巴別塔我注意到一些有點奇怪的東西。
const app = () => {}
應該等於var app = function() {}
?
Babel返回var app = function app() {}
。
不,babel是正確的,因為分配給var的箭頭函數理論上應該具有與該var的名稱相當的name屬性,以幫助堆棧跟蹤和反射。 查看此鏈接以獲取更多信息。 如果它變得陳舊,請快速摘要:
函數的name屬性在聲明時創建。 函數表達式的name屬性是從名稱綁定推斷出來的:
var foo = function() {};
console.log(foo.name); // foo
箭頭函數具有相同的行為:
var foo = () => {};
console.log(foo.name); // foo
因為在ES 2015 / ES 6 babel必須實際添加名稱以創建命名函數表達式之前,這實際上沒有標准化:
var foo = function foo() {}; // notice it's function *foo* now
支持傳統環境。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.