2015-03-09 18 views
6

Bağışlayın ama bu olmamalı çalışması gerekir?için-döngü kapanması ile devlet tasarrufu

var elems = [1,2,3,4,5] 

for (var i = 0; i <elems.length; i++) { 
    return (function(e){ 
     console.log(e) 
    })(i); 
} 

Anlamı, bu yapmıyor nedense

>>node file.js 
1 
2 
3 
4 
5 

tükürmek gerekir. Tersine, terminalde çalıştırıldığı zaman, bu, ne eksik? Lütfen detaylandırır mısınız? Hayatta sadece 0 yazdırır ve açıkça bir şey dönmez çünkü bu deyimi

return (function(e){ 
    console.log(e) 
})(i); 

hemen hayatını tarafından döndürülen değeri, geri dönüyor Çünkü

+1

A 'return'? Bunun bir sözdizimi hatası olmadığını merak ediyorum. – Bergi

+1

İlgili soru - [? Neden node.js bir modül seviyesine dönüş ifadesi çalışması] (http://stackoverflow.com/q/28955047/1903116) – thefourtheye

cevap

7

JavaScript derhal varsayılan ve çıkışında tarafından undefined dönecektir. Bunu düzeltmek için, sadece,

(function(e){ 
    console.log(e) 
})(i); 

PS return anahtar kelime damla: Yukarıdaki kodda return deyimi çalışır neden Hiç merak ettiniz mi? Bunu düşünmek, bir işlev içinde değil. Sonra teknik bir hata, değil mi? ;-) Bunu ayrıntılı olarak açıkladım, bu question.

2

Eğer geri dönüşü çağırdığınızda, hemen döngünün dışında kıracak. Tüm değerleri geri vermek isterseniz, bunları bir kaba koyup konteyneri geri vermeniz gerekecektir. Bir fonksiyon dışında

İlgili konular