Grunt-contrib-uglify在使用默认值的函数参数时抛出错误

grunt-contrib-uglify throws error when using function parameter with default value

本文关键字:参数 出错 错误 函数 默认值 Grunt-contrib-uglify      更新时间:2023-09-26

我使用Grunt 1.0.1和Grunt -contrib-uglify 2.0.0来丑化我项目中连接的.js文件。直到今天,我引入了一个带有函数参数的JavaScript函数,该函数参数具有默认值。

现在Grunt任务导致这个错误消息:

Running "uglify:app" (uglify) task
JS_Parse_Error {
  message: 'SyntaxError: Unexpected token operator «=», expected punc «,»',
filename: 'app.js',

这个任务所对应的app.js行是:

function addNumbers(a, b=1){
  console.log(a + b); 
}

表示行中b=1所在的列。

如果我删除默认值,一切又正常了。

为什么这里有grunt-contrib-uglify抱怨?我怎么解决这个问题?

参考错误消息,您显然没有使用ES6。设置b默认值的方式只在ES6中有效。

设置b的默认值

function addNumbers(a, b) {
  b = b || 1;
  console.log(a + b); 
}

如果您也想接受b的值为0,那么您可以检查b是否为undefined, ||是否为number,以设置b的默认值为1

function addNumbers(a, b) {
  b = (b === undefined || typeof b !== 'number') ? 1 : b;
  console.log(a + b); 
}