提早退出功能?

Sim*_*mon 380 javascript

我有一个功能:

function myfunction() {
  if (a == 'stop')  // How can I stop the function here?
}
Run Code Online (Sandbox Code Playgroud)

是否有类似exit()JavaScript的东西?

use*_*716 603

你可以使用return.

function myfunction() {
     if(a == 'stop') 
         return;
}
Run Code Online (Sandbox Code Playgroud)

这将发送返回值undefined到任何调用函数.

var x = myfunction();

console.log( x );  // console shows undefined
Run Code Online (Sandbox Code Playgroud)

当然,您可以指定不同的返回值.无论返回什么值,都将使用上面的示例记录到控制台.

return false;
return true;
return "some string";
return 12345;
Run Code Online (Sandbox Code Playgroud)

  • @dbme:JavaScript中的函数*总是*返回.如果尚未提供,则返回语句是隐式的.默认返回值是`undefined`,这就是我的主要解决方案提供的.您引用的文章是在jQuery事件处理程序中讨论`return false`.这是一个完全不同的问题.这是退出JavaScript函数的正确方法.显然,如果调用者依赖于返回的值,则需要适当地定义该值. (63认同)
  • 我知道这是一个老帖子,这是常见的做法,但我认为这是一个糟糕的解决方案.如果函数是SUPPOSED以返回值,则应使用return.如果您只是盲目地使用返回,您可能会在以后遇到问题.特别是如果您开始绑定其中包含返回的事件.查看这篇文章了解更多信息:http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/ (4认同)
  • ......一个隐含的变化是`if(a!='stop'){/*运行我的代码*/}`这样代码只在`a`不等于''stop'时运行而不提供明确的`return`.但返回值*与我的解决方案*相同.在这两种情况下,都会返回`undefined`. (3认同)
  • 很棒的回应.我没有意识到返回undefined vs false与不同值之间有任何区别.我一直试图找到关于过去一小时这种行为的明确答案.那么可以肯定地说(重申你的观点)返回是一种100%安全的方法来退出方法,即使调用者被绑定到事件等? (3认同)

CMC*_*kai 48

显然你可以这样做:

function myFunction() {myFunction:{
    console.log('i get executed');
    break myFunction;
    console.log('i do not get executed');
}}
Run Code Online (Sandbox Code Playgroud)

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

我还看不到任何缺点.但它似乎并不常见.

得出这个答案:PHP相当于PHP的死


Rob*_*Rob 17

这个:

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


xla*_*aok 17

function myfunction() {
     if(a == 'stop') 
         return false;
}
Run Code Online (Sandbox Code Playgroud)

return false; 比只是好多了 return;

  • 为什么'假'更好?我会说默认的`undefined`在通用情况下更好.无论哪种方式,你都说你返回一个有意义的值通常会更好. (12认同)

Rod*_*edo 10

使用一种不同的方法,您可以使用try catchthrow语句.

function name() {
    try {
        ...

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

        ...
    } catch (e) {
        // TODO: handle exception
    }
}
Run Code Online (Sandbox Code Playgroud)