返回语句混淆里面找到帮助器方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回语句混淆里面找到帮助器方法相关的知识,希望对你有一定的参考价值。
var posts = [{
id: 1,
title: 'new post'
},
{
id: 2,
title: 'old post'
}
];
var comment = {
postId: 1,
content: 'Great Post'
};
function postForComment(posts, comment) {
return posts.find(function(post) {
return post.id === comment.postId
});
}
var c = postForComment(posts, comment);
console.log(c);
在上面的代码中,输出是预期的,但我无法理解函数postForComment
中return语句的用法。为什么它使用两个返回函数,哪个返回函数在哪里?
简单地说,每个function
都需要返回它的结果,这里有两个嵌套的。
postForComment
返回结果
return posts.find(...)
但在posts.find
内部也是一个function
,它也需要返回其结果。
function(post) {
return post.id === comment.postId
}
因此,如果function
内部的posts.find
(通常称为回调函数)不返回任何内容,那么postForComment
也无法返回任何内容。
posts.find(function(post){
return post.id===comment.postId
});
您可以将上面的代码段视为独立的。在这种情况下,此函数将返回满足post
的post.id === comment.postId
的值。
返回的值由函数postForComment
接收。 postForComment
中的第一个返回值将依次将此值传递给变量c
function postForComment(posts,comment){
return posts.find(function(post){
return post.id===comment.postId
});
}
在此代码段中有两个功能。第二个return
语句返回满足条件的第一个post值的值。在posts.find
中,帖子的每个值都作为变量post传递给函数。当条件满足时,里面的函数将返回满足条件post.id === comment.postId
的帖子的值。第一个return
语句是这样的,posts.find
返回的值将返回给函数的调用者。也就是说变量c将接收posts.find
返回的值
find函数接受一个回调函数,在你的情况下回调函数是
function(post) {
return post.id === comment.postId
}
所以内部return
是从callback
函数返回,外部返回是从postForComment
函数返回
postForComment中的第一个返回使此函数返回帖子中找到的值。传递给posts.find的回调函数内部的返回在这里是因为array.prototype.find期望一个返回true或false的回调
代码的简化版本如下所示。 find()
函数迭代所有posts
并调用compareIDs()
,将当前帖子作为参数传递。
当compareIDs()
返回true时,find
将停止迭代并返回当前帖子,该帖子将存储在matchingPost
中。
现在matchingPost
将从postForComment()
返回并存储在c
。
HTH
var posts = [{
id: 1,
title: 'new post'
},
{
id: 2,
title: 'old post'
}
];
var comment = {
postId: 1,
content: 'Great Post'
};
function postForComment(posts, comment) {
var matchingPost = posts.find(function compareIDs(post) {
return post.id === comment.postId
});
return matchingPost;
}
var c = postForComment(posts, comment);
console.log(c);
以上是关于返回语句混淆里面找到帮助器方法的主要内容,如果未能解决你的问题,请参考以下文章