Jus*_*tin 1 javascript arrays ecmascript-6 eslint
去年,我更频繁地使用数组方法,如映射和过滤器,而不是数组上的标准 for 循环。它感觉更容易阅读和编写,并且可以完成我最有可能要做的所有事情,例如创建局部变量。
但很多时候我不会返回任何东西。不过埃斯林特不太喜欢我。据他们说,他们说你总是需要返回,否则“可能是一个错误” https://eslint.org/docs/rules/array-callback-return
为什么?只是好的做法吗?无返回数组方法有哪些缺点?
考虑这个问题有一段时间了。任何见解或想法都会很棒。
如果我不打算返回任何内容,我应该使用像map和filter这样的数组方法吗?
不,你不应该。
为什么?只是好的做法吗?
是的。对于您正在执行的迭代类型,使用适当的迭代方法是一个很好的做法。有多种方法可以出于某种原因进行迭代。选择适当的机制。
无返回数组方法有哪些缺点?
使用回调.map()但.filter()实际上不返回任何内容有以下缺点:
您的代码具有误导性。.map()and 的要点.filter()是迭代数组并生成一个新数组。当开发人员阅读某些代码并看到.map()或.filter()正在使用时,他们期望应该有一个返回的数组。当他们没有看到这样做时,他们会感到困惑,最初会觉得他们不理解代码。如果我对这样的代码进行代码审查,我不会批准这样的代码。
您的代码不必要地创建了未使用的对象。 这只是浪费而且不是一个好的做法。相反,请使用不会生成输出数组的迭代方法,例如for/of、常规for循环 或.forEach()。
你的代码不会起毛。 Linters 提供对事物的反对是有原因的。正如 linter 所说,使用.map()或.filter()不从回调返回任何内容“可能是一个编程错误”,因为这不是这些函数的设计使用方式,并且当您不想要返回的数组时,有适当的替代方案。
因此,如果您只是尝试进行迭代而不创建任何结果数组,请使用for/of或.forEach()或某些其他迭代方案,该方案不是专门为创建您不想要的输出数组而设计的。
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |