尝试缩小JavaScript时出现意外的令牌:运算符(>)?

时间:2018-11-28 13:22:22

标签: javascript

我正在尝试使用在线工具来缩小我的javascript代码,但是每次尝试执行此操作都会出现此错误:

// Error : Unexpected token: operator (>)
// Line  : 1
// Col   : 41

这是第1行:

var result = parsedObject.filter( audio => audio.filename === ''+audioFile+'' ); 

有人可以就这个问题及其解决方法提出建议吗?

先谢谢了。

2 个答案:

答案 0 :(得分:2)

显然,您的Minifier无法理解arrow functions,或者需要设置一些选项来知道您正在执行ES2015 +(“ ES6 +”)工作。您的选择是:

  1. 如果有选项,请打开该选项。或

    (您现在已经告诉我们您同时尝试了https://jscompress.com/https://javascript-minifier.com/。jscompress.com的右上角有一个“ ECMAScript 2018(通过Babili)”复选框勾选时,它将最小化您的示例代码。我在javascript-minifier.com上找不到任何选项。)

  2. 如果不是,请切换到可以理解它们的助词;或

  3. 不要使用箭头功能。在这种特殊情况下,将如下所示:

    var result = parsedObject.filter(function(audio) {
        return audio.filename === ''+audioFile+'';
    }); 
    
  4. 使用箭头功能,但在使用Babel之类的编译器进行缩小之前,将它们变成非箭头。

如果需要支持IE的任何版本,则无需向浏览器发送箭头功能(使用上述选项3或4)。如果您不必支持IE,而仅支持Edge,Chrome,Firefox和Safari等现代浏览器,则向浏览器发送箭头功能就可以了。


旁注:您不需要''两侧的audioFile。如果已经是字符串,则将其删除(=== audioFile)。如果还不是字符串,则只需执行一个或另一个,或使用String(audioFile)进行转换,然后在filter循环之前一次进行操作:

var audioFileString = String(audioFile); // or `'' + audioFile` or `audioFile + ''`
var result = parsedObject.filter(function(audio) {
    return audio.filename === audioFileString;
}); 

答案 1 :(得分:0)

您使用的工具不支持箭头功能(这是相对的新功能)。

您可以:

  • 找到支持现代JS的缩小工具
  • 首先不要使用箭头功能
  • 在最小化之前使用工具将JS转换为ES5