Yanıtlar:
Evet, return
yürütmeyi durdurur ve işlevden çıkar.return
her 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.
return
yine 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,5
atlıyor 3
.
return
her zaman geçerli this
bağlamdan dönecektir .
break
ve sonrareturn
.
İçinde çoğu (bu dahil) durumlarda, return
hemen çıkılacak. Dönüşü ise Bununla birlikte, try
eşlik eden blokta finally
blok, finally
her zaman ve her can "geçersiz" yürütür return
iç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 of
dö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 of
dö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 return
her 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.