为什么将对象推送到数组会导致 Gulp Uglify 崩溃

Why pushing object to array causes Gulp Uglify to crash

我有 gulpfile,它应该可以正常缩小我的 js 文件。我有一个函数,它运行具有以下行的每个循环:

newArr.push({[keyName]:val});

这一行导致 uglify 失败。

整个函数是这样的:

function convertArrToNestedObjArr(arr, keyName) {

    var newArr = [];
    if(arr) {

        $.each(arr, function(k, val) {

            newArr.push({[keyName]:val});
        })
    }
    return(newArr);
}

Gulp 过程出现以下错误:

stream.js:94 throw er; // Unhandled stream error in pipe. ^ Error at new JS_Parse_Error (eval at ...

你说过这段代码在一个文件中,该文件注定要发送到在 gulp 进程中被丑化的浏览器。

该行使用 ES2015 的 computed 属性 name 表示法。我怀疑缩小器还不明白这一点。如果是这样,那么相当多的浏览器 JavaScript 引擎还没有。

如果这是问题所在,请在丑化之前进行转译(可能使用 Babel 或 Traceur),或者替换

newArr.push({[keyName]:val});

var o = {};
o[keyName] = val;
newArr.push(o);