使用默认值问题缩小javascript

时间:2016-03-27 13:39:05

标签: javascript minify default-value bundling-and-minification

我的函数有一个默认值,如下所示:

function f(a, b = 'something') {
    //do stuff
}

这很好用,但如果我尝试使用在线相关应用程序缩小我的JS文件,则会出现错误:

  

错误:意外的令牌运算符'=',预期的punc','

据我所知,使用=设置default value in Javascript是合法的,为什么我会收到此错误?

我是否必须在函数体中定义默认值?

4 个答案:

答案 0 :(得分:13)

使用=为Javascript中的功能参数设置默认默认值是ES6功能,目前仅支持Chrome 49和Firefox 15.0:

enter image description here

由于浏览器支持有限,很少(如果有的话)缩小器已经支持此功能。

备选方案1:

你可以像这样设置默认参数:

function f(a, b) {
    b = typeof b  === 'undefined' ? 'something' : b;
    //do stuff
}

备选方案2:

您可以使用像Babel这样的转录程序将ES6代码转换为旧版浏览器& minifiers明白。

答案 1 :(得分:2)

Default parameters是EcmaScript的新功能,附带ES6(官方称为ES2015)。

大多数缩放器都不是最新的。不过,您可以在大多数ES6中使用#harmony branch of uglifyjs

这就是说,因为它们的支持仍然有限,除非

,否则默认参数在浏览器中不可用
  • 你不关心IE用户
  • 或者使用像Babel这样的转发器将代码从ES6转换为ES5

如果您尚未准备好使用其中一种解决方案,请注意所有MDN页面的"Browser Compatibility"

答案 2 :(得分:1)

你如何缩小?如果您使用gulp之类的内容,则可以使用pipe()链接,例如:

gulp('src.js').pipe(babel()).pipe(minify());

另一方面,您可以使用旧式“默认值”:

function (a, b) {
    b = b || 'default';
}

答案 3 :(得分:0)

试试这个:

function someFunction(a,b){
    a=(a=='bool condition here':a,'default value');//a is a optional parameter variable now with a default value
    b=(b=='bool condition here':b,'default value');//b is a optional parameter variable now with a default value
 }