2013-06-07 5 views
3
function MyFunction() { 

    if (SomeCondition) { 

     MyInnerFunction(SomeParam); 
     return; 
    } 

    if (SomeOtherCondition) { 

     MyInnerFunction(SomeOtherParam); 
     return; 
    } 

    if (SomeThirdCondition) { 

     MyInnerFunction(AnotherParam); 
     return; 
    } 

    function MyInnerFunction(Param) { 

     // Do some work here 
     // HERE: I want return from MyFunction 
    } 
} 

Как вы можете видеть, когда MyInnerFunction возвращается, следующий оператор, чтобы выполнить это return заявление MyFunction. Есть ли способ устранить все эти операторы return, чтобы возврат из MyFunction выполнялся внутри MyInnerFunction?возвращения внешней функции от внутренней функции

Спасибо.

+1

Нет, не существует. То, что вы хотите, невозможно. Внутренняя функция не имеет контроля над внешним. Вы можете использовать 'return MyInnerFunction (AnotherParam); вместо этого. –

+2

Как насчет 'else if'? – Prinzhorn

+0

У вас есть какой-либо другой код в 'MyFunction'? Почему бы просто не удалить все строки 'return '? –

ответ

3

вы можете переформатировать код так, чтобы ваши условия if изменяли только параметры. Затем вы просто вызываете свой метод с правильными параметрами в конце

function MyFunction() { 
    var params; 

    if (SomeCondition) 
     params = SomeParam; 
    else if (SomeOtherCondition) 
     params = SomeOtherParam; 
    else if (SomeThirdCondition) 
     params = AnotherParam; 

    MyInnerFunction(params); 
} 
+0

Нет, каждое утверждение if (Condition) все равно выполняется даже после выполнения MyInnerFunction. Причина, по которой у меня есть все эти операторы return, заключается в том, что после выполнения MyInnerFunction MyFunction немедленно возвращается, и никакие другие операторы if не оцениваются. – frenchie

+0

Почему вы не хотите, чтобы выполнялись условия? – Caleb

+0

Поскольку нет необходимости, будет выполняться только одно условие. – frenchie

Смежные вопросы