什么时候应该在JavaScript函数的末尾添加一个返回?

什么时候应该在JavaScript函数的末尾添加一个返回?,javascript,jquery,Javascript,Jquery,我看到一些开发人员在JavaScript函数的末尾放置了一个返回,如下所示: $(".items").each(function(){ mthis = $(this); var xposition = some .x() position value; if(xposition < 0){ mthis.remove(); return; } }); $(“.items”)。每个(函数(){ mthis=$(本); var x

我看到一些开发人员在JavaScript函数的末尾放置了一个返回,如下所示:

$(".items").each(function(){
    mthis = $(this);
    var xposition = some .x() position value;
    if(xposition < 0){
        mthis.remove();
        return;
    }
});
$(“.items”)。每个(函数(){
mthis=$(本);
var xposition=some.x()位置值;
if(xposition<0){
mthis.remove();
返回;
}
});
有必要回来吗?我知道
return false
提前取消循环,我知道
return x
返回一个值,但刚刚返回???这是什么意思

抱歉-我忘了在代码的末尾加上}。返回值在if条件中



新更新-刚刚发现循环的目的是取消进入循环的第n个项目。所以return false是我对简单return的替代;(这意味着未定义)。谢谢大家的帮助

这只是一种结束函数执行的方法,无需选择正确的返回值。在函数结束时,它实际上没有什么区别。

就像
返回false
一样,它会提前取消块外(在本例中是函数)。返回值将是
未定义的

在函数的末尾,这相当于根本不使用return语句,但您的示例在我看来不像函数的结尾

EDIT:只是让它更清楚一点:这个特定的返回语句位于周围的
if
子句的末尾,而不是整个函数。换句话说,
if
子句的条件指定函数应该中途终止的情况


编辑2:通过“函数”,我指的是内部匿名函数<代码>返回,相当于
返回未定义
,确实会导致
jQuery.each()
转到下一项。(另外,我似乎错误地认为函数中有更多的代码;考虑到OP对代码示例的编辑,它看起来确实像是一个无意义的返回语句。)

在函数结束时返回而不继续返回实际上没有任何作用。但是,返回“this”允许方法链接。

您的示例具体说明了
jQuery如何处理循环函数的返回值。从文档中:

我们可以通过使 回调函数返回false。返回非false与 for循环中的continue语句;它将立即跳到下一个 迭代

因此,返回除
false
之外的任何内容都没有区别,它将继续进行下一次迭代<然而,代码>错误
,打破了循环


注意
返回
返回undefined完全相同

问题在于,你的大括号的开始和结束没有对齐,因此根据哪个是正确的,这将执行不同的操作。如果If的右大括号在返回之后,那么这将像常规for循环中的
continue

$(".items").each(function(){
    mthis = $(this);
    var xposition = some .x() position value;
    if (xposition < 0) {
        mthis.remove();
        return;
    }
}

这里,由于位于代码块的末尾,即使不直接调用
return
,该方法也会隐式返回;在某些情况下,它可能很有用,只是作为一个指示器,表明您处于函数的末尾,特别是在有大量嵌套的情况下。如果不在底部,它肯定会有所不同,因为
之后没有返回任何内容将被执行。否则,这种差异纯粹是风格上的差异。当然,为您节省了几个字符以省去它

回报行为;函数中的任何地方都与代码到达函数末尾时调用方接收未定义的代码完全相同

在该代码中,它与条件一起使用。我不得不假设您没有显示完整的代码


此方法通常用于在不满足前置条件时跳转到函数末尾,因为它可能比五个缩进(每个缩进有另一个条件)更具可读性

我不知道人们为什么会这样做(除非它总是坚持使用
return
语句),但是
return与省略它完全相同。你不可能得到比这更好的答案。如果jQuery中的
返回false,则不可能得到更好的答案。每个都将打破循环<代码>返回
返回未定义将继续循环。@David说得对。不过,我指的是内部匿名函数,而不是jQuery.each()。我将进行另一次编辑以消除任何歧义。是、是和是。你说得对,杰克。我刚刚纠正了这个问题。所以根据你的想法,这仍然不重要……好吧,听起来不错!我刚给开发者发完电子邮件。他告诉我,他并没有试图用返回false中止each()函数,只是想删除循环中的当前.item(如果它满足条件语句),然后转到.each函数中的下一个.item。在这种情况下,使用报税表是否有意义;就像我上面所说的那样?如果你到这里,你可以看到我所说的代码,并在页面中间部分搜索代码,查找$(“.defect”)。每个(函数(){…然后您将看到返回;我正在谈论。我刚刚发现使用return false;会产生与我所查找的相同的结果。因此,不需要简单地返回;在if条件语句中。感谢Jack提供的所有提示!@blachawk return false;不一样,因为这也会停止.each()
function doSomething() {
    alert("Hello, world");
    return; //purely a matter of preference
}