bundle.js文件中的Babel输出未正确输出

时间:2018-02-28 13:18:34

标签: javascript npm webpack ecmascript-6 babeljs

我一直在努力想弄清楚巴贝尔的情况。它没有输出任何接近它应该的东西。

此处显示:https://babeljs.io/repl/#?babili=false&browsers=&build=&builtIns=false&code_lz=G4QwTgBAdiC2CmAhArgSwDYBN6QLwQDNkoBjAF1QHsoAKA1MAZzIDk55cAiAKUoAsonADQR0IZmwRcAIpXicAlBADeAKBLVGldPAB06SgHM6DCewgBqCJ2uXR41uwUBuVQF9XqmAhQZsYGhcgA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&lineWrap=true&presets=es2015%2Creact%2Cstage-2&prettier=false&targets=&version=6.26.0&envVersion=

我可以提供推断解决方案所需的任何上下文/文件。感谢。

示例script.js函数:

var nameBuilder = function(firstName="John", lastName="Doe") {
console.log(firstName + " " + lastName);
};

nameBuilder();

Babel输出(出现在一个代码块中,所以我没有缩进):

!function(e){var n = {}; function t(o){if(n [o])return n [o] .exports; var r = n [o] = {i:o,l :!1,exports:{}};返回e [o] .call(r.exports,r,r.exports,t),rl =!0,r.exports} tm = e,tc = n,td =功能(例如,N,O){至(e,n)的|| Object.defineProperty(E,N,{可配置的:1,可枚举:0,得到:○})},TR =函数(e)中{ Object.defineProperty(e,“__ esModule”,{value:!0})},tn = function(e){var n = e&& e .__ esModule?function(){return e.default}:function() {return e}; return td(n,“a”,n),n},to = function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},tp =“”,t (ts = 1)}([function(e,n,t){“use strict”;!function(){var e = arguments.length> 0&& void 0!== arguments [0]?arguments [[ 0]:“John”,n = arguments.length> 1&& void 0!== arguments [1]?arguments [1]:“Doe”; console.log(e +“”+ n)}()} ,函数(例如,N,T){e.exports = T(0)}]);

2 个答案:

答案 0 :(得分:2)

这实际上并不正确,Babel是一个trapeiler,它使程序员能够在尚未实现它们的平台上使用更新的JavaScript功能(如示例中的默认参数)。在此示例中,Babel已重写您的函数以使用您的默认参数替换undefined,以便使用尚未实现默认参数的平台。

供参考,这是兼容性表:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters#Browser_compatibility

答案 1 :(得分:1)

看起来有一些压缩/ uglify标志设置,通常用于减少生产代码的大小。 检查babel的标志/配置/默认行为。