jquery JavaScript数组方法中'return item'和'return true'有什么区别?

l3zydbqr  于 2023-04-29  发布在  jQuery
关注(0)|答案(2)|浏览(126)

首先,我为我的问题中的任何错误道歉,因为我对提问的想法很少。
我想到了这两个案例:

const comment = comments.find(function (comment) {
            if (comment.id === 823423) {
                return true;
            }
        });

还有这个

const comment = comments.find(function (comment) {
            if (comment.id === 823423) {
                return comment;
            }
        });

当我试着运行这两个代码时,它给出了相同的结果,这两者之间的区别是什么?哪一个是更好的实践?

mqkwyuun

mqkwyuun1#

find回调应该返回一个boolean标志(一个truthyfalsy值),其中truthy值意味着该项目是您要查找的。所以从语义上讲,return true是正确的。(尽管return comment工作,因为任何非null对象引用都是真的,但它是误导性的。)
其他一些方法(例如,mapsort)期望回调返回布尔标志以外的内容。map方法希望您返回应该在结果Map数组中的项;sort需要一个数字(其中负值、零值和正值告诉sort传递给回调进行比较的元素的相对顺序)。当你不确定回调函数应该返回什么时,请查看MDN文档(或者任何好的参考)。
在您的特定示例中,您依赖于在ID不匹配时隐式返回undefined(因为在这种情况下,回调从不显式返回值)。相反,您应该显式地返回一个假值。最简单的方法是直接返回比较结果:

const comment = comments.find(function (comment) {
    return comment.id === 823423;
});

或者更简洁地,通过参数解构和箭头函数:

const comment = comments.find(({id}) => id === 823423);
ih99xse1

ih99xse12#

第一个更好。
第二个将像第一个一样隐式转换为true。顺便说一句,你还应该把return false添加到这两者中。
你应该尝试 typescript ,它可以帮助你写出更好的代码。

相关问题