首先,我为我的问题中的任何错误道歉,因为我对提问的想法很少。
我想到了这两个案例:
const comment = comments.find(function (comment) {
if (comment.id === 823423) {
return true;
}
});
还有这个
const comment = comments.find(function (comment) {
if (comment.id === 823423) {
return comment;
}
});
当我试着运行这两个代码时,它给出了相同的结果,这两者之间的区别是什么?哪一个是更好的实践?
2条答案
按热度按时间mqkwyuun1#
find
回调应该返回一个boolean标志(一个truthy或falsy值),其中truthy值意味着该项目是您要查找的。所以从语义上讲,return true
是正确的。(尽管return comment
工作,因为任何非null
对象引用都是真的,但它是误导性的。)其他一些方法(例如,
map
或sort
)期望回调返回布尔标志以外的内容。map
方法希望您返回应该在结果Map数组中的项;sort
需要一个数字(其中负值、零值和正值告诉sort
传递给回调进行比较的元素的相对顺序)。当你不确定回调函数应该返回什么时,请查看MDN文档(或者任何好的参考)。在您的特定示例中,您依赖于在ID不匹配时隐式返回
undefined
(因为在这种情况下,回调从不显式返回值)。相反,您应该显式地返回一个假值。最简单的方法是直接返回比较结果:或者更简洁地,通过参数解构和箭头函数:
ih99xse12#
第一个更好。
第二个将像第一个一样隐式转换为
true
。顺便说一句,你还应该把return false
添加到这两者中。你应该尝试 typescript ,它可以帮助你写出更好的代码。