Mitä eroa sulkemisen ja sisäkkäisen funktion javascriptin välillä on?


Vastaus 1:

Sisäiset toiminnot:

Yhtä funktiona kirjoitettua funktiota kutsutaan sisäkkäiseksi funktioksi. Oletetaan, että ulkofunktiota on kaksi ja sen sisällä on sisäfunktio. Sisäisellä toiminnolla on pääsy omiin muuttujiin, ulkoisiin funktioiden muuttujiin, argumentteihin ja sillä on pääsy globaaleihin muuttujiin. Tämän tekee laajuusketju. Jokaiseen näin luotuun funktioon liittyy laajuusketju, joka auttaa meitä pääsemään muuttujien arvoon.

Sulkemiset:

Mitä sulkemiset ovat? Sulkemiset - Sisäkkäiset toiminnot elävät edelleen, vaikka ulkoinen toiminto on suoritettu loppuun. Päivittäinen tapa, jolla voimme nähdä sulkemisen, on takaisinsoittoja. Soittopyynnöt ovat toimintoja, jotka yleensä suoritetaan tapahtuman loppuessa, kun ne suoritetaan, heillä on pääsy ulkoisiin funktiomuuttujiin, vaikka ulkoinen toiminto on suorittanut loppuun suorituksen.

Esimerkki:

toiminto sendAjax () {
var externalVar = "abc";
$ .Ajax ({
        kätkö : ...,
        url: ...,
        tyyppi: ...,
        crossDomain: ...,
        tiedot: ....,
        sisältötyyppi : ...,
        aikakatkaisu: 20000,
        tietotyyppi : ...,
        menestys: toiminto (vastaus) {
console.log (outerVar);
},
        virhe: toiminto (jXhr, virhe) {
console.log (outerVar);
},
        xhrFields: {
            withCredentials: totta
        }
   });
}

Nyt tässä koodissa, kun soitat funktiolle sendAjax, se tekee Ajax-puhelun ja palauttaa, joten ulkoinen toiminto on palannut, kun ajax-puhelun onnistunut onnistuminenCallback-kutsu kutsutaan, tämä on sisäinen toiminto, ja kun se tekee console.log, se tulee kirjoita konsoliin “abc”, koska sisäisellä toiminnolla on silti pääsy ulkoisten funktioiden muuttujiin, vaikka ulkoinen toiminto onkin suorittanut loppuun suorituksen.

Tässä on mielenkiintoinen linkki ymmärtää enemmän - http: //javascript.info/tutorial / ...

Jos sinulla on vielä kysymyksiä, viesti minulle.