⊗jsPmCdScpN 135 of 505 menu

Nyanser av variabel skop i if-else konstruksjoner i JavaScript

Variabel skop har en del nyanser. La oss se på det med et eksempel. La oss deklarere en variabel res med en verdi på utsiden av vår betingelse, og inne i betingelsen endre denne verdien til en annen:

let res = 1; if (true) { res = 2; } console.log(res); // vil skrive ut 2

Som du ser, variabelen res ble endret inni betingelsen. Alt forandrer seg imidlertid, hvis vi også deklarerer variabelen res via let inne i betingelsen:

let res = 1; if (true) { let res = 2; // deklarerer variabel via let } console.log(res); // vil skrive ut 1, ikke 2!

Her handler det om at deklarasjon av variabel via let inne i betingelsen skapte en lokal variabel res.

Det vil si at inne i betingelsen finnes en variabel res, og utenfor betingelsen - en annen. Du kan overbevise deg om dette ved å skrive ut verdien av variabelen i konsollen inne i betingelsen:

let res = 1; if (true) { let res = 2; console.log(res); // vil skrive ut 2 } console.log(res); // vil skrive ut 1

Forfatteren av koden nedenfor ønsket å utføre en sjekk av alder for å oppnå 18 år. Koden skriver imidlertid ut verdien undefined i konsollen uansett hvilken alder som er satt. Retts opp i feilen forfatteren av koden har gjort. Her er den problematiske koden:

let age = 17; let adult; if (age >= 18) { let adult = true; } else { let adult = false; } console.log(adult);

Forfatteren av koden nedenfor ønsket å utføre en sjekk av alder for å oppnå 18 år. Etter å ha sjekket koden viste det seg at hvis alderen er lik eller større enn 18 år, så blir true skrevet til variabelen adult, slik det skal være, derimot hvis alderen er mindre enn 18, har variabelen adult verdien undefined. Retts opp i feilen forfatteren av koden har gjort.

Her er den problematiske koden:

let age = 17; let adult; if (age >= 18) { adult = true; } else { let adult = false; } console.log(adult);

Forfatteren av koden nedenfor ønsket å utføre en alderssjekk. Koden skriver imidlertid ut undefined i konsollen uansett alder. Retts opp i feilen forfatteren av koden har gjort.

Her er den problematiske koden:

let age = 17; let res; if (age >= 18) { if (age <= 23) { let res = 'fra 18 til 23'; } else { let res = 'mer enn 23'; } } else { let res = 'mindre enn 18'; } console.log(res);

Forfatteren av koden nedenfor ønsket å utføre en alderssjekk. Koden skriver imidlertid ut undefined i konsollen når alderen er større enn 18 år. Retts opp i feilen forfatteren av koden har gjort.

Her er den problematiske koden:

let age = 19; let res; if (age >= 18) { let res; if (age <= 23) { res = 'fra 18 til 23'; } else { res = 'mer enn 23'; } } else { res = 'mindre enn 18'; } console.log(res);
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis