javascript - [] = 上的 UglifyJS2 无效赋值

标签 javascript variable-assignment uglifyjs gulp-uglify

我已经开始处理一个使用 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。

关于javascript - [] = 上的 UglifyJS2 无效赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46906805/

相关文章:

javascript - 在 d3 时间轴上显示每隔一个刻度标签?

javascript - 单击按钮将一个 div 内容添加到另一个 div 时

javascript - 有没有办法在 React 应用程序中链接非 React html 文件?

python - 如何在 python 中将一个 netcdf 文件中的变量添加到另一个 netcdf 文件中?

javascript - 在生产构建期间从 bundle 中删除 JavaScript 代码

javascript - nwdirectory 作为模型传递给 Angular

objective-c - 为什么运行时允许将数组中的 NSDictionary 赋值给 NSString 变量?

C++ 指针赋值(指向 vector )

javascript - 是否有适合 Javascript 1.7 尤其是 Firefox 扩展的编译器/压缩器库?

javascript - webpack 丑化错误 : Unexpected token: keyword (function)