Yanıtlar:
Evet, returnyürütmeyi durdurur ve işlevden çıkar.returnher zaman ** işlevini derhal terk eder, for döngüsü içerisindeyse başka bir işlem yapılmaz.
Kendiniz için kolayca doğrulanır:
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
** Notlar: Özel durumla ilgili bu diğer yanıta bakın try/catch/finally ve forEach döngülerinin kendi işlev kapsamına nasıl sahip olduğu hakkındaki bu cevap içeren işlevden kopmayacaktır.
returnyine de, kendi kapsamı içinde, işlev geri aramasının geçerli yinelemesinden döner, ancak tüm çağrı yönteminden kopması beklenmez forEach(). Yani döngünün kendisinden dönmüyor , ancak döngünün yürüttüğü geri çağrıdan dönüyor. Bağlantılı sorudan kod örneğinde, çıktı dönüş nedeniyle 1,2,4,5atlıyor 3.
returnher zaman geçerli thisbağlamdan dönecektir .
break ve sonrareturn .
İçinde çoğu (bu dahil) durumlarda, returnhemen çıkılacak. Dönüşü ise Bununla birlikte, tryeşlik eden blokta finallyblok, finallyher zaman ve her can "geçersiz" yürütür returniçinde try.
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42
returnİfadesi bu fonksiyonun içeride yalnızca bir döngü durur. Aksi takdirde, bu hatayı alırsınız:
Uncaught SyntaxError: Illegal return statement(…)
Bu kod, bir for ofdöngüdeki ilk yinelemeden sonra döngüden çıkar:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
Aşağıdaki kod koşula atlar ve bir for ofdöngüde devam eder :
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
Evet, return ifade yürütüldükten sonra, tüm fonksiyon bu noktadan çıkar.
Sadece olmasaydı ve döngü yapmaya devam edip returnher seferinde bu ifadeyi yürütmeye devam ederse ne olacağını hayal edin. Düşündüğünüzde bir değer döndürmenin anlamı geçersiz olur.
Cevap evet, eğer return ifadesi yazarsanız kontroller hemen arayan yönteme geri döner. Dönüş ifadesinden sonra yürütülen nihayet bloğu hariç.
ve son olarak bloğun içine dönerseniz, döndürdüğünüz değeri de geçersiz kılabilir. LINK: Try-catch-nihayet-dönüş açıklaması
Aşağıdaki gibi İade Beyanı tanımı:
Java Belgeleri:
bir dönüş ifadesi bir kontrol akış bloğundan dallanmak ve yöntemden çıkmak için kullanılabilir
MSDN Belgeleri:
Return ifadesi bir işlevin yürütülmesini sonlandırır ve denetimi çağrı işlevine döndürür. Yürütme, çağrıyı hemen takip eden noktada çağrı işlevinde devam eder.
Wikipedia:
Bir return deyimi, yürütmenin geçerli altyordamdan ayrılmasına ve altyordamın dönüş adresi olarak bilinen altyordamın çağrılmasından hemen sonra kodda devam etmesine neden olur. Dönüş adresi, alt program çağrısını yapma işleminin bir parçası olarak, genellikle sürecin çağrı yığınına kaydedilir. Birçok dilde döndürme ifadeleri, bir işlevin, işlevi çağıran koda geri döndürülmesini belirtmesine izin verir.
"return" işlevi işlevden çıkar, ancak büyük miktarda veri döndürmek istiyorsanız, verileri bir dizide saklayabilir ve ardından her veri parçasını döngüde 1'e 1 döndürmeye çalışmak yerine geri döndürebilirsiniz.