Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript UglifyJS2在[]上的赋值无效=_Javascript_Variable Assignment_Uglifyjs_Gulp Uglify - Fatal编程技术网

Javascript UglifyJS2在[]上的赋值无效=

Javascript UglifyJS2在[]上的赋值无效=,javascript,variable-assignment,uglifyjs,gulp-uglify,Javascript,Variable Assignment,Uglifyjs,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] =

我已开始处理一个旧项目,该项目用于缩小其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(/[\/-]/);
如果我把这些行通掉,我会得到更多的错误,因为
newTitle
newVal
prodW
prodL
boxL
都在别处使用

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

这是我正在运行的吞咽任务,以防有帮助

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

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

问题在于
Uglify2
与ES6不兼容。您可以尝试使用新的兼容的
Uglify3
,也可以先将ES6代码转换为ES5,例如
gulp babel


使用Babel这样做的好处还在于,较旧的浏览器不支持ES6。

首先使用支持ES6的UGLIFER或transpiler创建es5代码,然后使用uglify,谢谢@Daniel,这很有意义。因此,我尝试使用转换回es5,但没有任何变化。我是否需要选择es2015作为预设之一?您还知道为什么babel会在末尾添加一个空声明,
\u currentOption$text$s?是的,您需要设置预设。我建议使用
env
预设,您可以在其中提供应支持的浏览器列表。但是简单地使用
es2015
也可以。声明只是巴贝尔转换代码所需要的东西。如果它们确实未使用,Uglify将为您移除它们。:)