Anladığım kadarını size söyleyeyim. Yanlışlarımı düzeltin varsa eksiğim söyleyin lütfen.add variable'ı, self invoking bir fonksiyona refer ediyor. Self invoking bir fonksiyon yalnızca bir defa çalıştırılır. Bu fonksiyon en son başka bir fonksiyon return ediyor. Dolayısıyla add() fonksiyonunun scope'undan asla çıkılmaz diyebiliriz bu fonksiyonda benzer şekilde başka bir function expression return etmediği müddetçe, doğru mu ? counter variable'ına hala nasıl erişebiliniyor? add variable'ı artık return edilen fonksiyona mı refer ediyor? Bunun mantığı nedir yani açıklayabilir misiniz?
Anladığım kadarını size söyleyeyim. Yanlışlarımı düzeltin varsa eksiğim söyleyin lütfen.add variable'ı, self invoking bir fonksiyona refer ediyor. Self invoking bir fonksiyon yalnızca bir defa çalıştırılır. Bu fonksiyon en son başka bir fonksiyon return ediyor. Dolayısıyla add() fonksiyonunun scope'undan asla çıkılmaz diyebiliriz bu fonksiyonda benzer şekilde başka bir function expression return etmediği müddetçe, doğru mu ? counter variable'ına hala nasıl erişebiliniyor? add variable'ı artık return edilen fonksiyona mı refer ediyor? Bunun mantığı nedir yani açıklayabilir misiniz?
<script> var add = (function () { var counter = 0; return function () {return counter += 1;} })();
function myFunction(){ document.getElementById("demo").innerHTML = add(); } </script>
</body> </html>
O fonksiyonun içinden de başka bir fonksiyon return edince olmadı. O zaman şöyle bir çıkarımda bulunuyorum : sadece self invoking fonksiyonun içinden bir function expresssion return edebiliriz. normal bir fonksiyonun içinden function expression return etmeye çalışırsak "function declaration" return ediliyor.
JavaScript bilmiyorum ama, senin de dediğin gibi, programın izleyeceği yoldaki en son (the most inner ?) expression'ı atıyor değişkenine. En azından düz programlama mantığıyla öyle olması lazım. Örneğin
var add = (function () { var counter = 0; return function () { var semih=0; return function(){ semih += 5; } }() )();
Bu kodun şunu yapması lazım; semih değişkenini 5 arttıran fonksiyon parçacığını return edecek (add'e) Çünkü en içerde o var (return function(){ semih += 5; }). Muhtemelen şöyle bir kod çalışacaktır (fonksiyonun yazılımından sonra);
semih = 3; add(); // Buradan sonra semih'in değeri 8 olmalı.
JavaScript bilmiyorum ama, senin de dediğin gibi, programın izleyeceği yoldaki en son (the most inner ?) expression'ı atıyor değişkenine. En azından düz programlama mantığıyla öyle olması lazım. Örneğin
var add = (function () { var counter = 0; return function () { var semih=0; return function(){ semih += 5; } }() )();
Bu kodun şunu yapması lazım; semih değişkenini 5 arttıran fonksiyon parçacığını return edecek (add'e) Çünkü en içerde o var (return function(){ semih += 5; }). Muhtemelen şöyle bir kod çalışacaktır (fonksiyonun yazılımından sonra);
semih = 3; add(); // Buradan sonra semih'in değeri 8 olmalı.
Yukarıda da belirtttiğim üzere bu kod çalışmıyor. Koskoca donanımhaberden bi js ci çıkmadı yaw helal olsun ayrı bir başlık bile yok js için vay be
Anladığım kadarını size söyleyeyim. Yanlışlarımı düzeltin varsa eksiğim söyleyin lütfen.add variable'ı, self invoking bir fonksiyona refer ediyor. Self invoking bir fonksiyon yalnızca bir defa çalıştırılır. Bu fonksiyon en son başka bir fonksiyon return ediyor. Dolayısıyla add() fonksiyonunun scope'undan asla çıkılmaz diyebiliriz bu fonksiyonda benzer şekilde başka bir function expression return etmediği müddetçe, doğru mu ? counter variable'ına hala nasıl erişebiliniyor? add variable'ı artık return edilen fonksiyona mı refer ediyor? Bunun mantığı nedir yani açıklayabilir misiniz?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi loves_oi -- 11 Eylül 2015; 12:43:41 >