我写了这些简单的代码,
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()
后运行剩余的函数
我怎么能这样做?
编辑:我真正想知道的是,如果“返回”键colud立即终止外部函数,如VB.Net上的“Exit Sub”
答案 0 :(得分:1)
您传递了处理应停止在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
抛出:
function a() {
function b() {
function d() {
if (/*some condition*/) {
throw new Error(); // ***
}
return;
}
d();
}
function c() {
alert('c')
};
b();
c();
}
...但是a
会抛出而不是正常完成(尽管你可以添加try
/ catch
)。此外,投掷相对昂贵,不适合正常的分支目的。
答案 1 :(得分:0)
您可以使用内部函数的返回值并将其用作标记。
function a() {
function b() {
function d() {
console.log('in d');
if (true) {
return;
}
return true;
}
console.log('in b');
return d();
}
function c() {
console.log('in c');
alert('c');
}
console.log('in a');
console.log(b() && c());
}
a();