基本:返回并停止JavaScript上的代码执行
我写了这些简单的代码基本:返回并停止JavaScript上的代码执行,javascript,Javascript,我写了这些简单的代码 function a() { function b() { function d() { if (/*required condition goes here and should stop execution of function a()*/) { return } }
function a()
{
function b()
{
function d()
{
if (/*required condition goes here and should stop execution of
function a()*/)
{
return
}
}
d()
}
function c()
{
alert ('c')
};
b();
c();
}
我所期望的是,当满足函数d()
上的必要条件时,执行会中止,并取消函数c()
的执行。否则,在执行函数b()
我该怎么做
编辑:我真正想知道的是,对于VB.Net上的“Exit Sub”这样的外部函数,如果“return”键colud立即终止,您可以将返回值用于内部函数,并将其用作标志
函数a(){
函数b(){
函数d(){
console.log('in d');
如果(真){
返回;
}
返回true;
}
console.log('in b');
返回d();
}
函数c(){
console.log('in c');
警报(“c”);
}
console.log('in a');
console.log(b()和&c());
}
a()
您要将处理应该停止的信息传递到d
和b
之外,并使用它来确定是否调用c
:
function a() {
function b() {
function d() {
if (/*some condition*/) {
return false; // ***
}
return true; // ***
}
return d(); // ***
}
function c() {
alert('c')
};
if (b()) { // ***
c(); // ***
} // ***
}
或者,您可以使用d
throw:
…但是
a
会抛出而不是正常完成(尽管您可以添加try
/catch
)。另外,抛出的代价相对较高,并且不是用于正常的分支目的。函数d
可能会返回一个值,稍后如果该值与预期值匹配,则返回该值。因此,这意味着'return'关键字不会立即停止外部函数的执行,与VB.Net上的“Exit Sub”类似?@BayuSadewa:return
只退出您在其中使用的函数,而不退出其包含的函数。我99.99%确信,当你在另一个函数中使用lambda时,VB.Net中的Exit Sub
是一样的(如果你在另一个函数中使用lambda,C.Net中的return
肯定是一样的)。我将使用内部函数的值来确定是否调用容器/外部函数上的剩余函数,对吗@T.J.克劳德感谢你的回答,很好的解释。这是我最想知道的。不管怎样,我怎样才能将这个问题标记为已解决?我是这里的新手。@BayuSadewa:你点击你认为最能回答问题的答案旁边的复选标记。b()&&c()
到底做什么?它是一个函数,检查第一个表达式,如果它有一个truthy值,则检查第二个表达式。在这种情况下,如果返回undefined
或false
,计算将停止。根据上面的代码片段,我们得到的是b()
从其内部函数d()
返回true
,而c()
将返回undefined
,因为c()
从未确定返回的内容。因此,b()&&c()
的标志返回false。我说得对吗@ninascholzb返回d,d返回未定义b()&&c()
从b返回undefined
并返回这个值。哇,我错过了d()
哈哈。那么,警报('c')
呢。它从未被执行过。
function a() {
function b() {
function d() {
if (/*some condition*/) {
throw new Error(); // ***
}
return;
}
d();
}
function c() {
alert('c')
};
b();
c();
}