Babel箭头功能编译成ES5

时间:2017-07-13 13:19:01

标签: javascript ecmascript-6 babel

使用Babel我发现了一些有点奇怪的东西。

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

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

1 个答案:

答案 0 :(得分:4)

不,babel是正确的,因为分配给var的箭头函数理论上应该具有等于该var名称的name属性,以帮助堆栈跟踪和反射。查看this链接了解详情。如果它变得陈旧,请快速摘要:

在声明时创建函数的name属性。函数表达式的name属性是从名称绑定推断出来的:

var foo = function() {};
console.log(foo.name); // foo

箭头功能具有相同的行为:

var foo = () => {};
console.log(foo.name); // foo

因为在ES 2015 / ES 6 babel必须实际添加名称以创建named function expression之前,这实际上并未实现标准化:

var foo = function foo() {}; // notice it's function *foo* now

支持传统环境。