2016-03-25 19 views
1

kapatma olduğu sonucunu verir:Bu kapsam küresel kapsamda mı?

function xPlusPlus() { 
    var x = 0; 
    return function() { 
    console.log(x++); 
    } 
} 

var inner = xPlusPlus(); 
inner();// 0 
inner();// 1 
inner();// 2 

Ama, bu kapatma da nedir?

var x = 0; 

function xPlusPlus() { 
    console.log(x++); 
} 
xPlusPlus();// 0 
xPlusPlus();// 1 
xPlusPlus();// 2 

Başka xPlusPlus işlev bildirimi küresel kapsamı ekli kapanışları oluşturur anlamına küresel kapsamı içinde olduğu Snippet'lerinizi sarma orada hiçbir şey varsayarsak cevap

+0

EVET tarafından x artırır edelim !! Hangi davranışın bu davranışa neden olduğu önemli değildir. –

+0

"Kapatma" terimini "tüm dış kapsamların canlı anlık görüntüsü" olarak düşünün. Bu küresel kapsamı içerir. Ayrıca, işlevler kapanma değil, * onları * oluşturur. – Tomalak

+0

@RajaprabhuAravindasamy Teşekkürler! –

cevap

1

için çok minnettar olacağım.

function xPlusPlus() { 
    var x = 0; 
    return function() { 
    console.log(x++); 
    } 
} 

var inner = xPlusPlus(); 
inner(); 
:

fark

  • birinci durumda xxPlusPlus kapsamında ikinci vaka x küresel

içindedir

  • Bu İlk durumda yürütme konuşma olduğunu olmasıdır

    Satır console.log(x++);: 'Hey anonim işlev, x değişkenini biliyor musunuz?'

    anonim işlev: 'HAYIR, bir seviye yukarı git!'

    Hat console.log(x++);: 'Hey, değişken x biliyor xPlusPlus fonksiyonunu yapmak'

    xPlusPlus function: 'Evet, sizin için var!'

    Satır console.log(x++);: 'Cool! Bana bir tarafından x artırır edelim '

    END


    Bu ikinci vaka yürütme konuşma:

    var x = 0; 
    
    function xPlusPlus() { 
        console.log(x++); 
    } 
    xPlusPlus(); 
    

    Hat console.log(x++);:' Hey fonksiyonu xPlusPlus yapmanız x değişkenini biliyor musunuz? '

    fonksiyon xPlusPlus: 'HAYIR bir üst gruba gitmek, küresel etki içine çekersiniz!'

    Hat console.log(x++);: 'Hey global scope fonksiyon, değişken x biliyor musunuz?'

    global scope:' Evet, sizin için var! '

    Satır console.log(x++);: 'Cool! Bana bir'

    END

  • +0

    Большое спасибо, Олег! :) –

    +1

    :) vsegda pozhaluysta – oKonyk

    İlgili konular