Şimdi Ara

JavaScript Clousres

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
521
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar merhaba,http://www.w3schools.com/js/js_function_closures.asp adresindeki Javascript Clousures başlığı altındaki örneği anlamadım:


    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?


     
    <!DOCTYPE html>
    <html>
    <body>

    <p>Counting with a local variable.</p>

    <button type="button" onclick="myFunction()">Count!</button>

    <p id="demo">0</p>

    <script>
    var add = (function () {
    var counter = 0;
    return function () {return counter += 1;}
    })();

    function myFunction(){
    document.getElementById("demo").innerHTML = add();
    }
    </script>

    </body>
    </html>





    < Bu mesaj bu kişi tarafından değiştirildi loves_oi -- 11 Eylül 2015; 12:43:41 >







  • quote:

    Orijinalden alıntı: loves_oi

    Arkadaşlar merhaba,http://www.w3schools.com/js/js_function_closures.asp adresindeki Javascript Clousures başlığı altındaki örneği anlamadım:


    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?


     
    <!DOCTYPE html>
    <html>
    <body>

    <p>Counting with a local variable.</p>

    <button type="button" onclick="myFunction()">Count!</button>

    <p id="demo">0</p>

    <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.

    Kod şöyle :

     
    <!DOCTYPE html>
    <html>
    <body>

    <p>Counting with a local variable.</p>

    <button type="button" onclick="myFunction()">Count!</button>

    <p id="demo">0</p>

    <script>
    var add = (function () {
    var counter = 0;
    return function ()
    {
    var semih=0;
    if(counter >5)
    {
    return function(){ semih += 5; }
    }
    return counter += 1;}
    }
    )();

    function myFunction(){
    document.getElementById("demo").innerHTML = add();
    }
    </script>

    </body>
    </html>




    counter > 5 iken output böyle :
     
    function(){ semih += 5; }




    Bu kod ise çalışmıyor, self invoking fonksiyon, self invoking fonksiyon return etsin, o da normal bi fonksiyon return etsin dersem çalışmıyor
    <!DOCTYPE html> 
    <html>
    <body>

    <p>Counting with a local variable.</p>

    <button type="button" onclick="myFunction()">Count!</button>

    <p id="demo">0</p>

    <script>
    var add = (function () {
    var counter = 0;
    return function ()
    {
    var semih=0;

    return function(){ semih += 5; }


    }()
    )();

    function myFunction(){
    document.getElementById("demo").innerHTML = add();
    }
    </script>

    </body>
    </html>




  • 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ı.
  • quote:

    Orijinalden alıntı: welrocken

    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




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.