【问题标题】:JavaScript eslint error - Don't make functions under loopJavaScript eslint 错误 - 不要在循环下创建函数
【发布时间】:2017-09-08 09:07:08
【问题描述】:

我正在用 cucumber framework 用 Ja​​vaScript (NodeJS) 编写一个自动化测试脚本。我的步骤定义之一需要调用 API 并读取 JSON 数据。

在下面的代码中,ptRecords 是 JSON 响应块,其中我正在读取一个名为 jsonElement1jsonElement2 的元素,这两个元素重复了几次,因此我正在阅读所有出现的内容..

我下面的代码工作正常,但是当我运行 lint 时,它会抛出 lint 错误,说不要在循环语句下创建函数。

能否请您告知如何调用这些外部循环并获得响应..

我需要这样做直到K循环结束

for (let k = 0; k < 5; k += 1) {
  ptRecords.forEach((jsonArrObj1) => {
    const jsonArrObjTagValue = objectHelpers.walk(jsonArrObj1.jsonElement1);
    acc.push(jsonArrObjTagValue1);
  });

  ptRecords.forEach((jsonArrObj2) => {
    const jsonArrObjTagValue = objectHelpers.walk(jsonArrObj2.jsonElement2);
    acc.push(jsonArrObjTagValue2);
  });
};

【问题讨论】:

    标签: javascript node.js eslint


    【解决方案1】:

    你也许可以改变这个:

    for (let k = 0; k < 5; k += 1) {
      // ...
    }
    

    进入:

    [0, 1, 2, 3, 4].forEach(k => {
      // ...
    });
    

    或者您可以使用一些快捷方式来自动生成数组:

    [...Array(5).keys()].forEach(k => {
      // ...
    });
    

    或:

    [...Array(5)].forEach((v, k) => {
      // ...
    });
    

    或者,如果您知道自己在做什么,有时您最好的选择是禁用某个规则:

    // eslint-disable-line no-loop-func
    

    【讨论】:

    • 感谢各种可能的方式。这对我很有帮助:)
    猜你喜欢
    • 2011-10-15
    • 2014-08-17
    • 2023-03-30
    • 2014-03-02
    • 2011-03-03
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多