当我使用babel将ES6编译为ES5时,为什么浏览器需要polyfills文件

时间:2016-11-10 09:26:59

标签: javascript browser ecmascript-6 babel

如果babel将ES6翻译为ES5并输出ES5文件,那么如果app输出文件包含ES5代码,为什么浏览器需要包含polyfill文件?

1 个答案:

答案 0 :(得分:1)

Babel将ES6(和更新的)代码转换为ES5代码。例如,它将箭头函数(() => {})重写为ES5函数(function() {})。但是,ES6不仅仅是一些新的语法。

https://babeljs.io

  

由于Babel只转换语法(如箭头函数),因此您可以使用babel-polyfill来支持新的全局变量(如Promise)或新的本机方法(如String.padStart(左键))。它使用core-js和regenerator。查看我们的babel-polyfill文档以获取更多信息。

所有新功能都需要使用polyfill实现。这些polyfill必须全局包含在您的项目中。否则ES6函数的每次使用都将被ES5代码中该函数的实现所取代。所以如果你使用例如Array#findIndex十次,转换后的代码也会包含十次实现。这就是为什么必须在全球范围内添加polyfill,而不仅仅是通过蒸煮步骤添加。