[] = 上的 UglifyJS2 无效赋值

UglifyJS2 invalid assignment on [] =

我已经开始处理一个旧项目,该项目使用 gulp-uglify 来缩小它的 JS,但是当我 运行 gulp 任务时出现以下错误:

GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Invalid assignment
File: app/assets/js/main.js
Line: 92
invalid assignment [] =

果然,当我查看第 92 行时,我看到了一个奇怪的变量赋值,它具有我不熟悉的语法:

[newTitle, newVal] = $('#' + elementId + '-title').text().replace('*', '').split(':');

它后来出现在:

[prodW = 0, prodL = 0, boxL = 0] = currentOption.text().split(/[\/-]/);

如果我删除这些行,我会收到更多错误,因为 newTitlenewValprodWprodLboxL 都在别处使用。

知道这里发生了什么,有没有办法避免这些错误?

这是 gulp 任务 我正在 运行 以防有帮助...

gulp.task('compressJS', function (cb) { 
    pump([
            gulp.src('app/assets/js/*.js'),
            uglify(),
            gulp.dest('build/js/')
        ],
        cb
    );
});

这是 JavaScript ES6 的一个特性,称为 Destructuring Assignment

问题是 Uglify2 不兼容 ES6。您可以尝试使用兼容的新 Uglify3,或者先将您的 ES6 代码转换为 ES5,例如 gulp-babel: https://www.npmjs.com/package/gulp-babel

用Babel来做的好处还在于旧版浏览器不支持ES6