Babel将箭头函数编译成ES5

4

使用Babel,我注意到了一些奇怪的东西。

const app = () => {}不应该等同于var app = function() {}吗?

Babel返回var app = function app() {}


4
不,babel是正确的,因为理论上分配给变量的箭头函数应该具有与该变量名称等效的名称属性,以帮助进行堆栈跟踪。请查看此链接:http://2ality.com/2015/09/function-names-es6.html。 - Jared Smith
1个回答

4
不,babel是正确的,因为理论上分配给变量的箭头函数应该具有等于该变量名称的名称属性,以帮助堆栈跟踪和反射。请查看此链接获取更多信息。简要总结如下(以防链接过期):
函数的名称属性在声明时创建。函数表达式的名称属性从名称绑定中推断出来:
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

为了支持传统的环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接