Как сказал alex , функция return
немедленно передает управление из вызова функции; никакие другие операторы в функции (кроме finally
блоков) не выполняются.
Итак:
function foo(a) {
if (a == 1) {
alert("a is 1");
return;
alert("This never happens, it's 'dead code'");
}
alert("a is not 1");
}
foo(1); // alerts "a is 1" and nothing else
foo(2); // alerts "a is not 1"
Относительно того, что я сказал выше, что "никакие другие операторы в функции (кроме finally
блоков) не выполняются" , больше о finally
блоках:
function foo(a) {
try {
if (a == 3) {
throw "a is e";
}
if (a == 1) {
alert("a is 1");
return;
alert("This never happens, it's 'dead code'");
}
alert("a is not 1");
}
catch (e) {
alert("exception: " + e);
}
finally {
alert("finally!");
}
}
foo(1); // alerts "a is 1", then "finally!"
foo(2); // alerts "a is not 1", then "finally!"
foo(3); // alerts "exception: a is 3", then "finally!"
Обратите внимание, что независимо от того, как выполнение покидает блок try/catch
, естественным образом выпадением дна, ранним из-за return
или ранним из-за исключения, код в блоке finally
всегда работает.
Не по теме : Отдельно обратите внимание, что вам нужно заключить в скобки это выражение функции, если вы собираетесь вызывать его немедленно следующим образом:
var isNumberEqualOne = (function(){
// ^--- here
if(num == 1){
return true;
}
return false;
})();
// ^--- and here
или вы можете поместить ()
, который его называет, в скобках следующим образом:
var isNumberEqualOne = (function(){
// ^--- here
if(num == 1){
return true;
}
return false;
}());
// ^--- and here
Либо работает.