Przejdź do głównej zawartości

Bug #004

🪲 Znajdź buga

var n = 1

if (n === 1) {
var n = 2
console.log(n)
}

console.log(n)

Jaka wartość zostanie zalogowana do konsoli w lini 5, a jaka w 8?

🧪 Rozwiązanie

let n = 1

if (n === 1) {
let n = 2
console.log(n)
}

console.log(n)

W przykładzie z błędem, zadeklarowanie zmiennej z użyciem wyrażenia var, spowoduje zalogowanie konsoli w obu miejscach wartość 2.

Nie jest to błąd per se, o ile jesteśmy świadomi własności działania deklaracji var, która to deklaruje zmienną o zasięgu globalnym.

Znacznie lepszym pomysłem dla deklaracji zmiennych będzie używanie wyrażenia let. Wtedy zasięg działania jest ograniczony do bloku kodu ({}), wewnątrz którego let zostało zdefiniowane.

Używając let, do konsoli zostaną zalogowane kolejno, wartości 2 i 1.

🎢 Plac zabaw

Otwórz edytor w nowym oknie

📑 Linki

❤️ Podobają Ci się bugi JS?

Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js