Tässä opetusohjelmassa opit JavaScript-nostosta esimerkkien avulla.
Nosto JavaScriptissä on käyttäytymistä, jossa funktiota tai muuttujaa voidaan käyttää ennen ilmoitusta. Esimerkiksi,
// using test before declaring console.log(test); // undefined var test;
Yllä oleva ohjelma toimii ja tulos on määrittelemätön. Yllä oleva ohjelma käyttäytyy kuten
// using test before declaring var test; console.log(test); // undefined
Koska muuttujatesti ilmoitetaan vain eikä sillä ole arvoa, undefined
sille annetaan arvo.
Jos haluat lisätietoja muuttujista, käy JavaScript-muuttujissa.
Huomaa : Vaikka näyttää siltä, että julistus on siirtynyt ohjelmassa ylöspäin, tapahtuu itse asiassa se, että funktio ja muuttujan ilmoitukset lisätään muistiin kääntövaiheen aikana.
Muuttuva nostaminen
Muuttujien ja vakioiden suhteen avainsana var
nostetaan let
eikä const
se salli nostamista.
Esimerkiksi,
// program to display value a = 5; console.log(a); var a; // 5
Yllä olevassa esimerkissä muuttujaa a käytetään ennen sen ilmoittamista. Ja ohjelma toimii ja näyttää lähdön 5. Ohjelma käyttäytyy seuraavasti:
// program to display value var a; a = 5; console.log(a); // 5
Alustuksia ei kuitenkaan nosteta JavaScript-ohjelmassa. Esimerkiksi,
// program to display value console.log(a); var a = 5;
Tuotos
undefined
Yllä oleva ohjelma käyttäytyy seuraavasti:
var a; console.log(a); a = 5;
Vain ilmoitus siirretään muistiin kääntövaiheessa. Siksi muuttujan a arvo johtuu undefined
siitä, että a tulostetaan muuttamatta sitä.
Lisäksi kun muuttujaa käytetään funktion sisällä, muuttuja nostetaan vain funktion yläosaan. Esimerkiksi,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Tuotos
hei Uncaught ReferenceError: b ei ole määritelty
Yllä olevassa esimerkissä muuttuja b nostetaan funktion yläosaan greet
ja siitä tulee paikallinen muuttuja. Siksi b on käytettävissä vain toiminnon sisällä. b: stä ei tule globaalia muuttujaa.
Lisätietoja paikallisista ja globaaleista muuttujista on JavaScript-muuttujan laajuudessa.
Huomaa : Nostossa muuttujailmoitus on käytettävissä vain välittömässä laajuudessa.
Jos let
avainsanan kanssa käytetään muuttujaa, kyseistä muuttujaa ei nosteta. Esimerkiksi,
// program to display value a = 5; console.log(a); let a; // error
Tuotos
Uncaught ReferenceError: A-kirjainta ei voi käyttää ennen alustusta
Käytettäessä let
muuttuja on ilmoitettava ensin.
Toiminnon nostaminen
Funktio voidaan kutsua ennen sen ilmoittamista. Esimerkiksi,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Tuotos
Hei siellä
Yllä olevassa ohjelmassa funktio greet
kutsutaan ennen sen ilmoittamista ja ohjelma näyttää lähdön. Tämä johtuu nostamisesta.
Kun funktiota käytetään lausekkeena , tapahtuu virhe, koska vain ilmoitukset nostetaan. Esimerkiksi;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Tuotos
Uncaught ReferenceError: tervehdystä ei ole määritelty
Jos var
sitä käytettäisiin yllä olevassa ohjelmassa, virhe olisi:
Uncaught TypeError: tervehdys ei ole funktio
Huomaa : Yleensä nostoa ei suoriteta muilla ohjelmointikielillä, kuten Python, C, C ++, Java.
Nosto voi aiheuttaa ei-toivottuja tuloksia ohjelmassasi. Ja on parasta ilmoittaa muuttujat ja toiminnot ensin ennen niiden käyttöä ja välttää nostamista.
Muuttujien tapauksessa on parempi käyttää let
kuin var
.