Javascript

1. Deklarering

Att deklarera och initiera variabler i JavaScript kan verka enkelt, men det finns några viktiga saker att tänka på för att undvika buggar och förvirring. Här är en genomgång:


🔹 1. Välj rätt nyckelord: let, const eller var

let

  • Blockscope (gäller bara inom { ... })
  • Kan omdeklareras inom olika block
  • Kan tilldelas nytt värde
let count = 1;
count = 2;  // OK

const

  • Blockscope
  • Måste initieras direkt
  • Kan inte omdeklareras eller tilldelas nytt värde
  • OBS: Objekt och arrayer kan ändras inuti
const name = "Anna";  
// name = "Eva";  ❌ fel

const user = { id: 1, name: "Anna" };
user.name = "Eva";  // ✅ tillåtet

var (gammal, undvik oftast)

  • Function scope (inte blockscope)
  • Hoisting (deklarationen flyttas upp, men värdet blir undefined tills det sätts)
  • Kan skapa oväntade buggar
console.log(a); // undefined, ingen error
var a = 5;

👉 Rekommendation idag:

  • Använd const som standard
  • Använd let när värdet ska ändras
  • Undvik var (för gammalt och riskabelt)

🔹 2. Initiering (ge värde direkt)

Det är bra praxis att initiera variabler när du deklarerar dem, annars får de värdet undefined.

let x;          // undefined
let y = 10;     // initierad

🔹 3. Scope (var gäller variabeln?)

  • let och const är blockscope (bra, säkert).
  • var är function scope och kan "läcka ut".
if (true) {
  let a = 1;
  const b = 2;
  var c = 3;
}
console.log(c); // ✅ funkar
console.log(a); // ❌ error (a is not defined)

🔹 4. Hoisting (uppflyttning)

  • var blir hoistat till toppen, men får värdet undefined.
  • let och const blir också hoistade, men ligger i en Temporal Dead Zone (TDZ) tills de når deklarationen → du kan inte använda dem innan.
console.log(x); // ❌ error
let x = 5;

console.log(y); // undefined
var y = 5;

🔹 5. Typ och omtypning

JavaScript är dynamiskt typat → en variabel kan byta typ när som helst. Det kan vara praktiskt men också orsaka buggar.

let value = 10;  
value = "tio";   // ✅ tillåtet

👉 Tänk på att detta kan skapa förvirring. I större projekt används ofta TypeScript för att få statiska typer.


🔹 6. Namngivning

  • Följ camelCase för variabler (userName, totalAmount)
  • Använd beskrivande namn (count, inte c)
  • Undvik reserverade ord (let let = 5; ❌)

Sammanfattning – att tänka på när du deklarerar/initierar:

  1. Använd const som standard, let om värdet ska ändras.
  2. Undvik var.
  3. Initiera variabler direkt om möjligt.
  4. Var medveten om scope (block vs function).
  5. Tänk på hoisting – använd inte variabler innan de deklareras.
  6. Namnge tydligt och håll dig till camelCase.
  7. Var försiktig med dynamisk typning.