Альтернатива 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, время: 04:54. |