去年我一直在使用数组方法,例如map and filter更常见的是代替数组上的标准 for 循环。它感觉更容易阅读和编写,并且可以完成我最有可能要做的所有事情,例如创建局部变量。
但很多时候我不会返回任何东西。不过埃斯林特不太喜欢我。据他们说,他们说你总是需要回报,否则就“可能是一个错误”
https://eslint.org/docs/rules/array-callback-return
Why?只是好的做法吗?无返回数组方法有哪些缺点?
考虑这个问题有一段时间了。任何见解或想法都会很棒。
如果我不打算返回任何内容,我应该使用像map和filter这样的数组方法吗?
不,你不应该。
为什么?只是好的做法吗?
是的。对于您正在执行的迭代类型,使用适当的迭代方法是一个很好的做法。有多种方法可以出于某种原因进行迭代。选择适当的机制。
无返回数组方法有哪些缺点?
Using .map()
and .filter()
没有从回调中实际返回任何内容有以下缺点:
-
您的代码具有误导性。要点是.map()
and .filter()
就是迭代数组并产生一个新数组。当开发人员阅读一些代码并看到.map()
or .filter()
在使用时,他们期望应该有一个返回的数组。当他们没有看到这样做时,他们会感到困惑,最初会觉得他们不理解代码。如果我对这样的代码进行代码审查,我不会批准这样的代码。
-
您的代码不必要地创建了未使用的对象。这只是浪费而且不是一个好的做法。相反,使用不会产生输出数组的迭代方法,例如for/of
, 一个常规的for
循环或.forEach()
.
-
你的代码不会起毛。Linters 提供对事物的反对是有原因的。使用.map()
or .filter()
不从回调中返回任何内容,就像 linter 所说的那样,“可能是一个编程错误”,因为这不是这些函数的设计使用方式,并且当您不想要返回的数组时,有适当的替代方案。
因此,如果您只是尝试进行迭代而不创建任何结果数组,请使用for/of
or .forEach()
或某些其他迭代方案,并非专门设计用于创建您不想要的输出数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)