Porównywanie wartości zmiennych + QUIZ

TIP: Cały kod do poszczególnych lekcji, dodatkową teorię i linki z tej i innych lekcji - znajdziesz w darmowym repozytorium - https://github.com/jaktestowac/typescript-dla-testera Chcesz dokładniej poznać TypeScript? Sprawdź nasz Program JavaScript i TypeScript dla Testerów

Dodatkowe materiały

Najważniejsze tematy w tej lekcji:

  • Ścisłe vs luźne porównania: ===/!== kontra == oraz !=.
  • Przy porównaniach typów:
    • Ścisłe porównanie nie konwertuje typów (np. 1 === '1' jest false).
    • Luźne porównanie konwertuje typy (np. 1 == '1' jest true).
  • Relacje: większe/mniejsze (czyli <, >, <=, >=).
TIP: Preferuj wykorzystanie === i !==, aby uniknąć zaskoczeń przy niejawnych konwersjach typów!

Linki zewnętrzne

Zadania

Przewidź, co zobaczysz w konsoli — a potem rozwiń rozwiązanie z wyjaśnieniem.

Zadanie 1 — ścisłe vs luźne (number vs string)

Treść zadania: Co wypisze konsola?

// Loose vs strict equality
console.log(1 == '1');
console.log(1 === '1');
Rozwiązanie i analiza
Luźne porównanie == konwertuje typy → 1 == '1' daje true.
Ścisłe porównanie === nie konwertuje → number nie równa się string → false.

Odpowiedź: true i false

Zadanie 2 — boolean i liczby

Treść zadania: Co wypisze konsola?

// Loose equality may coerce false -> 0
console.log(0 == false);
console.log(0 === false);
Rozwiązanie i analiza
== porównuje po konwersji typów (0 i false uznaje za równe) → true.
=== porównuje typ i wartość (number vs boolean) → false.

Odpowiedź: true i false

Zadanie 3 — null i undefined

Treść zadania: Co wypisze konsola?

// Special rule for null and undefined
console.log(null == undefined);
console.log(null === undefined);
Rozwiązanie i analiza
Dla == wartości null i undefined są traktowane jako równe → true.
Dla === różne typy → false.

Odpowiedź: true i false

Zadanie 4 — porównania liczbowe z konwersją

Treść zadania: Co wypisze konsola?

// When one side is a number and the other is a numeric string,
// JS converts the string to a number for <, >, <=, >=
console.log('8' < 10);
console.log(10 > '12');
Rozwiązanie i analiza
'8' zostanie przekonwertowane do 8 → 8 < 10 to true.
'12' → 12, więc 10 > 12 to false.

Odpowiedź: true i false

Zadanie 5 — porównania łańcuchów (string vs string)

Treść zadania: Co wypisze konsola?

// String vs string uses lexicographic (alphabetical) order by characters
console.log('2' > '10');
console.log('apple' < 'banana');
Rozwiązanie i analiza
Dla dwóch stringów porównywane są znaki od lewej:
– '2' porównane do '1' → '2' jest „większe”, więc '2' > '10' daje true.
– 'apple' jest „mniejsze” od 'banana' w porządku alfabetycznym → true.

Odpowiedź: true i true

Zadanie 6 — NaN i porównania

Treść zadania: Co wypisze konsola?

// NaN is never equal to anything, including itself
console.log(NaN === NaN);
console.log(Number.isNaN(NaN));
Rozwiązanie i analiza
NaN nie jest równe nawet samemu sobie → false.
Do sprawdzania używaj Number.isNaN → true.

Odpowiedź: false i true

2 komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *