如何摆脱object.key的编辑器错误

时间:2017-06-16 20:45:11

标签: javascript jquery json syntax

我有以下代码,基本上获取一些JSON数据,查找带有“servergenre”的键,并将结果保存在数组中。 这是this question的后续行动。

let result = [];
        Object.keys(data).forEach( key => {
            if(/servergenre/.test(key)){
                result.push(data[key])
            }
        });

即使代码工作正常,在某些编辑器中也会引发语法错误:

  • ”:无法解析的变量或类型键
  • => ”:预期的表达
  • “if( / server ...”:预期正式参数名称
  • )){”:,预期
  • }); ”:语句预期

这是一张图片,显示错误的位置:

screenshot of code with error underlines

正如我所说,代码工作正常,我只需要修复它或其他方法来消除错误。

此外,许多压缩器和缩小器不支持这段代码。所以我无法缩小它。

提前致谢。

2 个答案:

答案 0 :(得分:2)

ES2015(以前称为ES6)是JavaScript的更新版本,它为您正在使用的函数引入了=>语法等功能。

并非所有浏览器都完全支持ES2015的所有功能,因此很多使用它的人首先通过编译器(“transpiler”)将其转换为ES5,所有浏览器都支持ES5。 Babel就是这样一个转换器。但是,如果您只定位到较新的浏览器,那么就可以解释为什么=>语法适合您。

您只需更改编辑器设置即可理​​解该语法。具体如何操作取决于您使用的文本编辑器。可能是您的编辑器的内置JavaScript模式不知道如何阅读ES2015语法,您需要升级编辑器或安装提供更新错误检查程序的第三方插件。或者可能是您的编辑器同时支持ES5和ES2015,它认为您只是在ES5中编写项目。在这种情况下,您只需要进入设置并告诉编辑您对此项目的意思是使用ES2015(或ES2016,这是目前最新版本)。

答案 1 :(得分:1)

Fat箭头是ES6语法。如果这会导致麻烦,那就写好老ES5:

let result = [];
Object.keys(data).forEach( function(key) {
      if(/servergenre/.test(key)){
           result.push(data[key])
      }
});