Альтернатива return с меткой
Чтобы выйти из цикла можно использовать break
for(){ break; } В функции можно использовать return без выражения справа. function func(){ return; } Чтобы во вложенном цикле выйти из внешнего можно использовать break с меткой firstfor: for(){ for(){ break firstfor; } } Вопрос как из вложенной функции завершить внешнюю function func1(){ functiob func2(){ //Что-то завершающие func1 } } |
function func1(){ try{ function func2(){ //Что-то завершающие throw 'exit'; } продолжение func1; }catch(e){if e!=='exit' throw e} } Но оно гораздо медленее ретурнов. Легче сделать ретурн с опред значением и его на выходе проверять. try catch vs. returns кто быстрее ? |
Спасибо
Поставил + |
Цитата:
|
Цитата:
|
хорошо, а можно практический пример?
|
Цитата:
function getElement() { [1, 2, 3].forEach(function (element) { if (element % 2 == 0) { // возврат в функционал - .forEach, // но не выход из getElement alert('found: ' + element); // found: 2 return element; } }); return null; } alert(getElement()); // null, а не 2 |
ну так здесь нету никакого завершения внешней функции из вложенной.
|
Dmitry A. Soshnikov,
че-та я тоже пример не понял. Цитата:
|
Цитата:
Цитата:
Вот этот раздел: http://en.wikipedia.org/wiki/Closure...in_sema ntics (там пониже как раз примеры на Ruby с разными вариациями return-a приводится) Но речь идёт только о возможном завершении стека вызова (когда контексты существуют); и в Ruby можно сделать ошибку return-a, когда он не сможет определить, в какой контекст возвращать. |
Часовой пояс GMT +3, время: 01:56. |