ES6模块箭头功能导出不保留其名称

Tug*_*ain 5 javascript ecmascript-6

为什么导出的箭头函数不保留其名称,是否有办法让它们这样做?

给出如下的ES6模块:

myModule.js

export function doSomeWork1() {
}
export const doSomeWork2 = () => {
};
Run Code Online (Sandbox Code Playgroud)

如果我然后将它们导入到另一个文件中,那么导出的函数会保留其名称,而箭头函数则不会.

example.js

import { doSomeWork1, doSomeWork2 } from './myModule';
console.log('doSomeWork1...');
console.log(doSomeWork1);
console.log(doSomeWork1.name); // name is retained    
console.log('doSomeWork2...');
console.log(doSomeWork2);
console.log(doSomeWork2.name); // name is NOT retained
Run Code Online (Sandbox Code Playgroud)

输出:

doSomeWork1...
[Function: doSomeWork1]
doSomeWork1
doSomeWork2...
[Function]
Run Code Online (Sandbox Code Playgroud)

如果我在ES6模块中声明一个箭头函数而不导出它并直接在该文件中打印它确实保留了它的名字.

myModule.js

const doSomeWork3 = () => {
};
console.log('doSomeWork3...');
console.log(doSomeWork3);
console.log(doSomeWork3.name); // name is retained 
Run Code Online (Sandbox Code Playgroud)

输出:

doSomeWork3...
[Function: doSomeWork3]
doSomeWork3
Run Code Online (Sandbox Code Playgroud)

小智 1

我刚刚尝试过,还导出了 let func123 = () => {} ,它也适用于“const”和“let”。也许是您正在使用的某些配置?你在使用 webpack 还是其他东西?