热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

警告ESLint规则下的意外未命名函数func-names

如何解决《警告ESLint规则下的意外未命名函数func-names》经验,为你挑选了1个好方法。

我的eslint版本是4.18.2,它将给出如下警告:

意外的未命名函数需要
一个赋值或函数调用,而是看到一个表达式

以这种方式定义函数时:

 const farmerIds = a.reduce((function (hash) {
  return function (prev, curr) {
    !hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));
    return prev;
  };
}(Object.create(null))), []);

Patrick Hund.. 9

这是两个不同的问题……

意外的未命名函数

正如康斯坦丁指出的那样,这是ESLint规则func-names。

如果您不想禁用此规则,则可以为函数使用名称,如下所示:

const farmerIds = a.reduce((function reducer(hash) {
  return function fn(prev, curr) {
    !hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));
    return prev;
  };
}(Object.create(null))), []);

或者,我个人建议使用箭头功能:

const farmerIds = a.reduce(
  (hash => {
    return (prev, curr) => {
      !hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));
      return prev;
    };
  })(Object.create(null)),
  []
);

需要一个赋值或函数调用,而是看到一个表达式

ESLint抱怨这一行,它实际上是一个表达式,而不是赋值或函数调用:

!hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));

您可以将其重写为if语句:

if (!hash[curr.farmerId]) {
  hash[curr.farmerId] = prev.push(curr);
}

固定两者

将上面的代码示例放在一起,该代码应运行,而不会让ESLint抱怨:

const farmerIds = a.reduce(
  (hash => (prev, curr) => {
    if (!hash[curr.farmerId]) {
      hash[curr.farmerId] = prev.push(curr);
    }
    return prev;
  })(Object.create(null)),
  []
);

请注意,我还删除了第一个箭头函数主体周围的花括号,这是箭头的一个很好的附加功能,可以使代码更加简洁。



1> Patrick Hund..:

这是两个不同的问题……

意外的未命名函数

正如康斯坦丁指出的那样,这是ESLint规则func-names。

如果您不想禁用此规则,则可以为函数使用名称,如下所示:

const farmerIds = a.reduce((function reducer(hash) {
  return function fn(prev, curr) {
    !hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));
    return prev;
  };
}(Object.create(null))), []);

或者,我个人建议使用箭头功能:

const farmerIds = a.reduce(
  (hash => {
    return (prev, curr) => {
      !hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));
      return prev;
    };
  })(Object.create(null)),
  []
);

需要一个赋值或函数调用,而是看到一个表达式

ESLint抱怨这一行,它实际上是一个表达式,而不是赋值或函数调用:

!hash[curr.farmerId] && (hash[curr.farmerId] = prev.push(curr));

您可以将其重写为if语句:

if (!hash[curr.farmerId]) {
  hash[curr.farmerId] = prev.push(curr);
}

固定两者

将上面的代码示例放在一起,该代码应运行,而不会让ESLint抱怨:

const farmerIds = a.reduce(
  (hash => (prev, curr) => {
    if (!hash[curr.farmerId]) {
      hash[curr.farmerId] = prev.push(curr);
    }
    return prev;
  })(Object.create(null)),
  []
);

请注意,我还删除了第一个箭头函数主体周围的花括号,这是箭头的一个很好的附加功能,可以使代码更加简洁。


推荐阅读
  • JavaScript概述1.JavaScript定义JavaScript是Netscape公司开发的一种基于对象和事件驱动的脚本语言。它是弱类型语言,只能由浏览器解释执行。其中:脚本语言:解释运行( ... [详细]
  • [JavaScript] 多数前端工程师都没注意到的一个关于console.log()的坑
    [JavaScript]多数前端工程师都没注意到的一个关于console.log()的坑请阅读以下代码并猜测结果:functiontest(){le ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • get()方法用于拦截某个属性的读取操作,如果没有该属性的时候会报一个undefined的,如果结果get处理会返回对应的错误信息varperson{name:张三 ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • javascript如何判断值是否为undefined
    这篇文章主要介绍“javascript如何判断值是否为undefined”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ja ... [详细]
  • Whyusingstringsaskeysofarray,consoleisshowingthatarraywithoutthesedeclaredvaluesand ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • ihaveusedthedelphidatabindingwizardwithmyxmlfile,andeverythingcompilesandrunsfine. ... [详细]
  • IhaveawebapplicationthatusesanActiveXCOMcomponent,forexample:我有一个使用ActiveXCOM组件的Web应用程 ... [详细]
author-avatar
mobiledu2502884213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有