提前退出函数?

我有一个函数:

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

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

988453 次浏览

你可以只使用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;

这样的:

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

如果您正在寻找一个脚本,以避免在发现一些错误时提交表单,此方法应该有效

function verifyData(){
if (document.MyForm.FormInput.value.length == "") {
alert("Write something!");
}
else {
document.MyForm.submit();
}
}

提交按钮类型更改为"button"

<input value="Save" type="button" onClick="verifyData()">

希望这对你有所帮助。

如果你正在使用jquery。这将阻止函数冒泡到,因此父函数调用它也应该停止。

  function myfunction(e)
{
e.stopImmediatePropagation();
................
}
function myfunction() {
if(a == 'stop')
return false;
}

return false;return;好得多

显然你可以这样做:

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的die

使用稍微不同的方法,你可以使用try catch,带throw语句。

function name() {
try {
...


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


...
} catch (e) {
// TODO: handle exception
}
}

使用return将停止函数并返回undefined或你用return命令指定的值。

function myfunction(){
if(a=="stop"){
//return undefined;
return; /** Or return "Hello" or any other value */
}
}

退出();可以用来进行下一次验证。

输入任何抛出错误的随机命令,例如:

exit

die:-)

我不喜欢回答那些不是真正解决方案的问题……

...但当我遇到同样的问题时,我采取了以下解决方案:

function doThis() {
var err=0
if (cond1) { alert('ret1'); err=1; }
if (cond2) { alert('ret2'); err=1; }
if (cond3) { alert('ret3'); err=1; }
if (err < 1) {
// do the rest (or have it skipped)
}
}

希望对大家有用。

我认为抛出一个新的错误是停止执行的好方法,而不是仅仅返回或返回false。例如,我正在验证一些文件,我只允许在单独的功能上传最多5个文件。

validateMaxNumber: function(length) {
if (5 >= length) {
// Continue execution
}
// Flash error message and stop execution
// Can't stop execution by return or return false statement;
let message = "No more than " + this.maxNumber + " File is allowed";
throw new Error(message);
}

但是我把这个函数从主流函数中调用为

  handleFilesUpload() {
let files =  document.getElementById("myFile").files;
this.validateMaxNumber(files.length);
}

在上面的例子中,除非抛出new Error,否则我无法停止执行。只有当你在执行main函数时,return或return false才有效,否则不起作用。