Как сделать выход из родительской функции (return), внутри вложенной функции:
var $break = {}; function getElement() { try { [1, 2, 3].forEach(function (element) { if (element % 2 == 0) { // "return" из getElement alert('found: ' + element); // found: 2 $break.data = element; throw $break; } }); } catch (e) { if (e == $break) { return $break.data; } } return null; } alert(getElement()); // 2
Здесь ключевая логика в том, что любое исключение порождаемое на любой вложенности, полностью останавливает работу всего дальнейшего скрипта.
Обычно я использую такой путь:
var func = (function () { var return_value = 0; for (var i = 0; i < 10; i+=1) { (function (x) { var some_another_value = 0; return_value += some_another_value + x; })(i); } return return_value; })();
То есть ключевая логика здесь это return_value
Он более прост в понимании и реализации, но вариант от Сошникова более изящен.