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
- Assignment (=) - JavaScript | MDN
- Equality comparisons and sameness - JavaScript | MDN
- Logical NOT (!) - JavaScript | MDN
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js