Przejdź do głównej zawartości

Bug #029

🪲 Znajdź buga

let booleanValue = false

if (booleanValue = !false) {
console.log("It's not false!")
}

Czy w powyższym przykładzie konsola coś zaloguje, czy nie?

🧪 Rozwiązanie

let booleanValue = false

if (booleanValue === !false) {
console.log("It's not false!")
}

W przykładzie z błędem, w konsoli zostanie zalogowana wartość It's not false!

W kodzie pojawił się błąd wewnątrz instrukcji warunkowej. Zamiast operatora porównania użyty został operator przypisania.

W przypadku operatora przypisania, domyślnie zwracana jest wartość przypisywana.

booleanValue = !false to po prostu przypisanie zanegowanej wartości false, czyli wartości true.

Przypisanie true do zmiennej booleanValue zwraca wartość true, więc instrukcja warunkowa się wykonuje i console.log() zostaje wywołany.

Naprawienie błędu polega na poprawieniu błędnie użytego operatora przypisania i zastąpieniu go operatorem porównania.

Możemy też użyć alternatywnej konstrukcji i zamiast === !false, zapisać to jako !== false.

🎢 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