提前退出函数?

IT技术 javascript
2021-01-21 08:00:32

我有一个功能:

function myfunction() {
  if (a == 'stop')  // How can I stop the function here?
}

exit()JavaScript 中有类似的东西吗?

6个回答

你可以只使用return.

function myfunction() {
     if(a == 'stop') 
         return;
}

这将向undefined调用该函数的任何对象发送返回值

var x = myfunction();

console.log( x );  // console shows undefined

当然,您可以指定不同的返回值。使用上面的示例,返回的任何值都将记录到控制台。

return false;
return true;
return "some string";
return 12345;
...隐式变化是if(a != 'stop') { /* run my code */ }这样的代码只在a'stop'提供显式的情况下不等于时运行return但返回值与我的解决方案相同在这两种情况下,undefined都会被退回。
2021-03-15 08:00:32
@dbme:JavaScript 中的函数总是返回。如果未提供,则返回语句是隐式的。默认返回值是undefined,这就是我的主要解决方案提供的。您引用的文章是关于return false在 jQuery 事件处理程序中进行的。那是一个完全不同的问题。这是退出 JavaScript 函数的正确方法。显然,如果调用者依赖于返回的值,则需要适当地定义该值。
2021-03-25 08:00:32
我知道这是一个旧帖子,这是常见的做法,但我认为这是一个糟糕的解决方案。如果函数 SUPPOSED 返回一个值,你应该使用 return。如果你只是盲目地使用 return ,你以后可能会遇到问题。特别是如果您开始绑定具有返回值的事件。查看这篇文章了解更多信息:fuelyourcoding.com/jquery-events-stop-misusing-return-false
2021-03-26 08:00:32
@dbme:嗯,这完全取决于调用函数的方法的预期。如果某个代码库定义了一个事件系统,如果它接收undefined(或不接收其他值)作为返回值就会中断,那么您需要符合该 API 的规范,并返回正确的值。通常对于事件处理系统,它会期望undefined处理程序已完成的简单指示,并且没有进一步的说明。使用 jQuery,return false;有特殊的含义,给出指令做 apreventDefaultstopPropagation
2021-04-02 08:00:32
很棒的反应。我没有意识到返回 undefined 与 false 与不同的值之间有什么区别。在过去的一个小时里,我一直试图找到关于这种行为的明确答案。那么可以肯定地说(重申您的观点)返回是退出方法的 100% 安全方式,即使调用者绑定到事件等?
2021-04-06 08:00:32

显然你可以这样做:

function myFunction() {myFunction:{
    console.log('i get executed');
    break myFunction;
    console.log('i do not get executed');
}}

通过使用标签查看块范围:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

我还没有看到任何缺点。但这似乎并不常见。

得出这个答案:JavaScript 等效于 PHP 的死

是否可以将此解决方案与 nodejs 导出module一起使用?当我尝试时,出现“未使用标签”错误。export.MyFunction = function(data){myFunction:{break myFunction;}}
2021-03-14 08:00:32
function myfunction() {
     if(a == 'stop') 
         return false;
}

return false; 比仅仅好得多 return;

这取决于程序员并取决于用例。例如,一个函数可能会验证某些内容,因此如果验证失败,返回falseundefined.
2021-03-13 08:00:32
为什么false更好?我会说undefined在一般情况下默认值更好。无论哪种方式,您都正确地说返回有意义的值通常更好。
2021-03-23 08:00:32

这:

function myfunction()
{
     if (a == 'stop')  // How can I stop working of function here?
     {
         return;
     }
}

使用稍微不同的方法,您可以将try catch, 与 throw 语句一起使用

function name() {
    try {
        ...

        //get out of here
        if (a == 'stop')
            throw "exit";

        ...
    } catch (e) {
        // TODO: handle exception
    }
}
这可能是实际停止执行的唯一方法。但是,我确实认为原始海报是在谈论尽早从函数中返回。(有人制作了我刚刚发现的 1 分钟 youtube 视频,哈哈爆发。毕竟,您可以在技术上决定根据外部范围内的返回值抛出异常。(在我看来,这在逻辑上会更合适.)
2021-03-24 08:00:32