JavaScriptvariabel: Erklær, tildel en værdi med eksempel
⚡ Smart opsummering
JavaScriptvariabler gemmer værdier såsom navne og tal eller resultatet af et udtryk. Deklarering af en med var, let eller const reserverer et navngivet slot, som resten af scriptet kan læse og opdatere.
Variabler bruges til at gemme værdier (navn = "John") eller udtryk (sum = x + y). Enhver værdi, et script gemmer til senere – et brugernavn, en løbende total, et ja-eller-nej-flag – findes i en variabel, så det er den første færdighed, man skal tilegne sig at deklarere og navngive dem korrekt. JavaScript.
Deklarer variabler i JavaScript
Før du bruger en variabel, skal du først deklarere den. Du skal bruge nøgleordet var til at deklarere en variabel på denne måde:
var name;
Deklarationen opretter i sig selv navnet og intet mere. På dette tidspunkt eksisterer variablen, men den særlige værdi er udefineret, fordi der endnu ikke er tilføjet nogen værdi.
⚠️ Versionsnotat: var er det originale deklarationsnøgleord og kører stadig i alle browsere. ES6 (2015) tilføjet lad og const, som er nøgleordene moderne JavaScriptanvendelser. Begge sammenlignes med var længere nede på denne side.
Tildel en værdi til variablen
Du kan tildele en værdi til variablen, enten mens du erklærer variablen eller efter at have erklæret variablen.
var name = "John";
OR
var name; name = "John";
Begge former ender med det samme resultat. Det enkelte lighedstegnet er tildelingsoperatør: den kopierer værdien til højre for den ind i variablen til venstre for den. Det er ikke en test for lighed, som skrives == eller === og hører hjemme i betingede udsagn.
Navngivning af variabler
Selvom du kan navngive variablerne, som du vil, er det god programmeringspraksis at give variablerne beskrivende og meningsfulde navne. Desuden bør variabelnavne starte med et bogstav, og de skelner mellem store og små bogstaver. Derfor er variablerne elevnavn og elevnavn forskellige, fordi bogstavet n i navnet er forskelligt (n og N).
Fire regler afgør, om et navn overhovedet er lovligt:
- Det første tegn skal være et bogstav, et dollartegn eller et understregningstegn – aldrig et ciffer.
- Efter det første tegn er bogstaver, cifre, dollartegn og understregninger tilladt.
- Mellemrum er ikke tilladt, hvilket er grunden til, at en idé på to ord sammenføjes som studentName i stedet for at blive efterladt som to ord.
- Reserverede ord som var, let, const, class og return kan ikke genbruges som navne.
Ifølge konvention JavaScriptnavne bruger camelCase, så det første ord er med lille bogstav, og hvert efterfølgende ord starter med stort: firstName, totalPrice, isLoggedIn.
Scriptet nedenfor deklarerer to variabler, anvender de fem aritmetiske operatorer på dem og skriver hvert resultat til siden. Prøv dette selv:
<html>
<head>
<title>Variables!!!</title>
<script type="text/javascript">
var one = 22;
var two = 3;
var add = one + two;
var minus = one - two;
var multiply = one * two;
var divide = one/two;
document.write("First No: = " + one + "<br />Second No: = " + two + " <br />");
document.write(one + " + " + two + " = " + add + "<br/>");
document.write(one + " - " + two + " = " + minus + "<br/>");
document.write(one + " * " + two + " = " + multiply + "<br/>");
document.write(one + " / " + two + " = " + divide + "<br/>");
</script>
</head>
<body>
</body>
</html>
var vs let vs const i Modern JavaScript
Kun var eksisterede, når JavaScriptet blev først skrevet, og det har to vaner, der overrasker begyndere: det kan gendeklareres lydløst, og det ignorerer blokgrænser. let og const blev tilføjet for at rette begge. Tabellen nedenfor viser de tre nøgleord side om side.
| Adfærd | var | lad | const |
|---|---|---|---|
| Anvendelsesområde | Hele funktionen | Omsluttende blok | Omsluttende blok |
| Kan omfordeles | Ja | Ja | Ingen |
| Kan gendeklareres i samme omfang | Ja | Ingen | Ingen |
| Værdi kræves på deklarationslinjen | Ingen | Ingen | Ja |
| Læs før dens erklæring | Returnerer udefineret | Referencefejl | Referencefejl |
En simpel vane dækker næsten alle tilfælde: række ud efter const først, skift til lad i det øjeblik en værdi virkelig skal ændres, såsom en tæller inde i en af JavaScript-løkker, og behold var til at læse gammel kode i stedet for at skrive ny kode.
Variabelt omfang og hejsning i JavaScript
Scope bestemmer, hvilke dele af et script der kan se en variabel. En var-deklaration tilhører den funktion, der indeholder den, så den undslipper enhver if-blok eller for-blok indeni den funktion. En let- eller const-deklaration tilhører det par parenteser, den sidder i, og forsvinder uden for dem.
function demo() { if (true) { var wide = "visible throughout demo()"; let narrow = "visible only inside these braces"; } console.log(wide); console.log(narrow); }
Den første console.log udskriver sin streng. Den anden kaster en ReferenceError, fordi narrow ikke længere eksisterer, når if-blokken slutter.
hejsning er anden halvdel af historien. JavaScriptet registrerer hver deklaration i et scope, før det kører en enkelt linje i det scope. Et variabelnavn registreres og sættes til udefineret, så det er lovligt, men ubrugeligt at læse det tidligt. Et let- eller const-navn registreres uden en værdi, og mellemrummet mellem toppen af blokken og deklarationslinjen kaldes tidsmæssig død zone.
console.log(a); var a = 1; console.log(b); let b = 2;
Den første linje udskriver udefineret. Den tredje linje stopper med "Kan ikke få adgang til 'b' før initialisering" - fejlen, der gør let mere sikker end var, fordi den peger på den virkelige fejl i stedet for at skjule den.
Almindelige fejl ved deklaration JavaScriptvariabler
Fem beskeder tegner sig for det meste af konsoloutputtet, som begyndere ser, når de lærer variabler. Hver enkelt angiver en specifik årsag, så løsningen er normalt en enkelt linje.
| Konsolbesked | Årsag | Fix |
|---|---|---|
| Syntaksfejl: Identifikatoren 'x' er allerede blevet deklareret | let eller const brugt to gange for det samme navn i én blok | Genbrug den eksisterende variabel, eller omdøb den anden |
| TypeError: Tildeling til konstant variabel | En konstant fik en ny værdi | Deklarer det med let, hvis værdien skal ændres |
| ReferenceError: Kan ikke tilgå 'x' før initialisering | En let eller const blev læst inden for den tidsmæssige dødzone | Flyt læsningen under deklarationslinjen |
| Referencefejl: x er ikke defineret | Navnet blev aldrig angivet, eller det var stavet forkert | Erklær det, eller ret stavningen og brugen af store og små bogstaver |
| udefineret vises, hvor en værdi var forventet | Variablen blev deklareret, men aldrig tildelt | Tildel en værdi før den første aflæsning |
Hvis du tilføjer "use strict" øverst i en fil, bliver den tavse version af det fjerde tilfælde - der tildeler et navn, der aldrig blev deklareret - til en synlig fejl, hvilket er grunden til, at den hører hjemme i ethvert nyt script. De samme variable regler overføres uændret til arrays, objekterog serversidekode skrevet til node.js.
