Kuinka JavaScriptin muuttujan laajuus on aivan kuin monella hallinnon tasolla

Oletko koskaan pudonnut näppäimistöä turhautuneena saatuaan määrittelemätöntä arvoa yhä uudelleen ja yrittäessään löytää muuttujan arvo?

Tai oletko nimittänyt kaksi muuttujaa samaan asiaan tuntien koodauksen jälkeen, vain löytääksesi virheesi myöhemmin?

Molemmat nämä kysymykset voivat liittyä muuttujan laajuuteen. Soveltamisala määrittelee, mihin muuttujiin pääsee käsiksi koko komentosarjassa.

Kun määrität muuttujat oikein, huomaat, että koodisi on helpompi lukea ja virheenkorjata jokaiselle katsojalle.

Ongelma

Ennen ES6: n päivitystä JavaScriptiin voit pystyä ilmoittamaan muuttujat vain var. Koska var ei rajoita muuttujan laajuutta, sinun on pakko arvata, oliko muuttujalla globaali laajuus vai paikallinen laajuus.

Nyt JavaScript antaa sinun ilmoittaa muuttujat const: lla ja anna. Ne saattavat lisätä hieman monimutkaisuutta, mutta ne helpottavat koodisi ymmärtämistä.

Valitettavasti useimmat opetusohjelmat kuvaavat näitä laajuuksia joko laatikoina laatikoina tai yksisuuntaisena lasina. En tiedä sinusta, mutta en viettää paljon aikaa pakkaamalla laatikoita laatikoihin tai katselemalla yksisuuntaisen lasin kerroksia!

Mielestäni minulla on parempi tapa. Soveltamisala voidaan selittää tarkastelemalla tapoja, joilla kansainvälinen, kansallinen ja paikallislaki toimivat yhdessä. Joten sinun on vain ymmärrettävä, että hallintotasoilla on erilaisia ​​hallitaksesi eri laajuustasojen oppimiseksi. Tässä on nopea esikatselu, ja sitten siirrymme siihen!

Juomalait ovat ärsyttäviä, mutta toivottavasti ei liian kiistanalaisia

Aion yrittää välttää kaikkia lakeja, jotka liittyvät ajankohtaisiin poliittisiin kysymyksiin.

Globaali laajuus (Yhdistyneet Kansakunnat)

Komentosarjan ylätasolla määritellyt muuttujat kattavat maailmanlaajuisesti. Ne ovat kaikkien toimintojen käytettävissä. Näitä kutsutaan globaaleiksi muuttujiksi.

Ne ovat samanlaisia ​​kuin kansainväliset lait. Muista, että on melko vaikeaa antaa lakeja, jotka kaikki YK: n 193 jäsentä hyväksyvät. Joten näiden lakien tulisi kattaa vain tärkeimmät ihmisoikeudet. Yhdistyneet Kansakunnat eivät osallistu huumausainepolitiikkaan tai uskonnollisiin lakeihin, jotka saattavat koskea yksittäisiä maita. Kaksi esimerkkiä voisi olla:

"Orjuus on kielletty."

"Kemialliset aseet ovat kiellettyjä."

Tämä tarkoittaa, että nämä lait ovat voimassa kaikissa Yhdistyneiden Kansakuntien maissa sekä näiden maiden kaikissa valtioissa tai provinsseissa.

Tässä on näiden lakien ES6: ta edeltävä versio.

ES6: ssa voimme nyt ilmoittaa muuttujat const: lla ja let: llä. Const tekee muuttujan arvosta muuttumattoman - sitä ei voi muuttaa. Annetaan ei. Mielestäni näiden kahden perusoikeuden pitäisi ehdottomasti olla vaihtamaton! Joten sen pitäisi olla:

Et halua luoda liian monta globaalia muuttujaa. "Saastuttava" globaali laajuus tarkoittaa, että määrität liian monta muuttujaa, jotka ovat maailmanlaajuisesti saatavissa. Ohjelmoinnin kannalta koodin vianetsintä ja ylläpito on vaikeaa, kun käytät globaaleja muuttujia.

Tässä analogiassa ei ole olemassa kansainvälisiä lakeja ikästä, jonka kuluessa henkilöiden sallitaan juoda alkoholia. Jokaisen maan on määriteltävä nämä säännöt. YK ei voisi koskaan olla olemassa, jos se yrittäisi säännellä juoma-aikoja!

Toiminnan laajuus (Yhdysvallat)

Koska yllä olevat lait ovat globaalisti määriteltyjä, niihin voi päästä käsikirjoituksemme kaikkialla. Ja koska ne on määritelty const: lla, ne ovat muuttumattomia.

Entä lait, joita sovelletaan vain Yhdysvalloissa? Yksi esimerkki on juoma-aika, joka on opiskelijoiden vihollinen kaikkialla. Sinun on oltava 21-vuotias ostaaksesi alkoholia Yhdysvalloissa.

Pitäisikö tämän ikän olla muuttumaton vai muuttumaton? Ei. Itse asiassa Yhdysvalloissa ei ollut mitään juoma-aikaa koskevaa lakia vuoteen 1984 saakka. Se voi muuttua tulevaisuudessa uudelleen.

Käytämme anna määritellä tämä.

Jos yritämme käyttää drinkAge-arvoa unitedStates-toiminnon ulkopuolella, saamme virheen, koska se on olemassa vain funktion laajuudessa.

Muista vain - YK: n lait ovat edelleen voimassa Yhdysvalloissa.

Kiinnikkeet ovat tässä tapauksessa kuin maan rajat. Lait ovat voimassa vain kyseisen maan rajoissa. Joten, jos halusit luoda meksiko-funktion, voit määritellä drinkAge-arvon uudelleen 18: ksi.

Tässä on tämä koodi kaavion muodossa.

Estä laajuus (Massachusetts)

Asun Massachusettsissa, joten päätin valita oman valtioni tämän. Soveltamisalalla on yksi toinen taso: lohkon laajuus. Lohkoalue ja toiminnan laajuus ovat molemmat esimerkkejä paikallisesta laajuudesta, koska ne luovat paikalliset rajat muuttujien määrittelylle.

Estä laajuus tarkoittaa, että muuttuja voi olla paikallinen hakasarjoille {}, kuten if-lause tai silmukka. Kuten funktion laajuus, muuttuja on voimassa vain näissä hakasulkeissa.

Massachusettsissa kaikkien baarien on lopetettava palveleminen klo 2.00. Tiedän, tiedän - jos asut Euroopassa, se todennäköisesti kuulostaa törkeältä. Tämä laki tosiasiallisesti vaihtelee valtion mukaan. New Yorkissa he voivat palvella kello 4.00 asti.

Joka tapauksessa, jotta tämä toimisi koodina, meidän on määritettävä, ovatko lauseet unitedStates-toiminnossa. Määrittelemme muuttujan taas laskulla, koska nämä lait voivat varmasti muuttua.

CloseTime-muuttuja on voimassa vain if-lohkossa, kun taas drinkingAge on voimassa missä tahansa unitedStates-toiminnossa.

Jos haluamme määritellä erillisen sulkeutumisajan New Yorkille, voimme tehdä sen myös esteen laajuuden vuoksi.

Jos halusit ryhtyä toimiin CloseTime-muuttujan perusteella, voit nyt tehdä jotain jokaisessa lohkon sisällä.

Tässä on kaavio, joka kattaa kaiken tämän.

Muuttujan muuttaminen (uuden lain hyväksyminen)

Viimeinen osa. Oletetaan, että haluat antaa lain juoma-ajan muuttamiseksi Yhdysvalloissa. Sinun on luotava toiminto, joka pystyy muokkaamaan drinkingAge-muuttujaa. Kutsutaan sitä passDrinkingLaw.

Sinun on luotava passDrinkingLaw-toiminto unitedStates-toiminnossa, koska se on merkityksellinen vain Yhdysvalloissa. Ei ole olemassa globaaleja juomalakia.

Sillä on myös pääsy drinkAge-muuttujaan, joka määritteli alkuperäisen iän. Kuvittele, että halusit muuttaa juoma-ikän 18: ksi. Näin tekisit sen.

Siksi on tärkeää määritellä muuttuja koko unitedStates-laajuudessa. Haluat, että muutokset tulevat voimaan kaikissa drinkAge-käyttökohteissa. Ja jos haluat luoda universaalin passDrinksLaw-toiminnon, se ei toimisi tämän rakenteen kanssa.

drinkAge on paikallista yhdysvaltojen toimintoa. Tässä on kaavioversio.

Kehotus toimintaan

Nautitko tästä? Anna sille taputus, jotta muutkin voivat löytää sen. Ja jos haluat saada ilmoituksen julkaisessani tulevia analogioita käyttäviä opetusohjelmia, kirjaudu täällä: