基本:在JavaScript上返回和停止代码执行

时间:2017-02-18 12:26:40

标签: javascript

我写了这些简单的代码,

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”

2 个答案:

答案 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();