KWALIFIKACJA INF3 - TEST WIEDZY NR 2

PYTANIE NR 37.
Przyjrzyj się poniższemu fragmentowi kodu JavaScript. Co zostanie wyświetlone w konsoli po jego wykonaniu?
let x = 10;
let y = '10';
console.log(x === y);
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Operator === w JavaScript porównuje zarówno wartość, jak i typ danych.
x ma typ number (10), a y ma typ string ('10'). Ponieważ typy są różne, wyrażenie x === y zwraca wartość logiczną false, którą wypisze console.log().

Pełne wyjaśnienie:

W kodzie zmienna x ma wartość 10 i typ number, natomiast y ma wartość '10' i typ string (widać to po cudzysłowie).

Operator === to tzw. ścisła równość. Oznacza to, że aby wynik porównania był prawdziwy, muszą jednocześnie zgadzać się:

  • wartość (np. 10),
  • typ danych (np. number vs string).

W tym przypadku wartości "wyglądają podobnie", ale typy są różne, więc porównanie zwraca false. Funkcja console.log(...) wypisuje do konsoli dokładnie tę wartość logiczną.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • true — taka odpowiedź wynika zwykle z pomylenia operatora === z ==. Przy == JavaScript często wykonuje niejawne dopasowanie typów, ale przy === tego nie robi.
  • 10 — w konsoli nie zostanie wypisana liczba, bo argumentem console.log jest wynik porównania (boolean), a nie sama zmienna x ani y.
  • Błąd składni. — zapis jest poprawny składniowo: deklaracje let są prawidłowe, a literał '10' jest poprawnym napisem. Kod wykona się i zwróci wartość logiczną.

Wskazówka egzaminacyjna: gdy dane pochodzą z formularza lub z DOM, często są typu string. Jeśli chcesz porównać je z liczbą, najpierw jawnie skonwertuj (np. do number), a dopiero potem stosuj porównanie ścisłe.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operator === sprawdza ścisłą równość: porównuje jednocześnie wartość i typ. Jeśli typy różnią się (np. number i string), wynik będzie false, nawet gdy zapis wygląda podobnie (10 vs '10').
== może wykonać niejawną konwersję typów (np. zamienić napis na liczbę), więc bywa "luźniejsze". === nie konwertuje typów i wymaga zgodności typu i wartości. Na egzaminie zwykle bezpieczniej interpretować === jako "porównanie bez domyślnych konwersji".
Bo 10 to liczba (typ number), a '10' to napis (typ string). Przy === różny typ automatycznie oznacza wynik false, niezależnie od tego, że oba zapisy reprezentują "dziesiątkę".
Wypisze wartość logiczną false, bo porównanie x === y zwraca boolean. console.log nie "zgaduje intencji" — pokazuje dokładnie wynik wyrażenia przekazanego jako argument.
Nie. === porównuje bez niejawnej konwersji typów. Jeśli potrzebujesz porównać dane z formularza (często string) z liczbą, wykonaj konwersję jawnie (np. do number), a dopiero potem porównuj.
W JavaScript literały napisów są ujęte w cudzysłowy: pojedyncze '...' lub podwójne "..." (albo backtick `...`). Zapis '10' oznacza tekst, a nie liczbę. To kluczowe w zadaniach o porównaniach.
Bo składnia jest poprawna: let poprawnie deklaruje zmienne, średniki są dozwolone, a console.log(...) jest prawidłowym wywołaniem. Literał '10' to legalny napis. Kod wykona się i zwróci wynik porównania.
Najczęściej przy danych z HTML/DOM, np. value z pola formularza zwykle jest stringiem. Jeśli porównasz go z liczbą przez ===, łatwo uzyskać false. Dlatego w aplikacjach webowych często stosuje się konwersję (np. parse) przed logiką biznesową.
Możesz użyć operatora typeof, np. typeof x. Na potrzeby typowych zadań egzaminacyjnych wystarczy jednak rozpoznawać literały: liczby bez cudzysłowu to number, a wartości w cudzysłowie to string.
Najczęściej: mylenie == z ===, ignorowanie typów (string vs number), zakładanie automatycznej konwersji oraz mylenie tego, co jest logowane (wynik porównania) z samymi zmiennymi. Pomaga nawyk: najpierw typ, potem wartość.
info

To pytanie poprawnie rozwiązuje 74% zdających egzamin. średnio łatwe

W praktyce zawodowej kluczowe jest to, że operator === w JavaScript porównuje zarówno wartość, jak i typ danych.x ma typ number (10), a y ma typ string ('10').

Źródła:

  • MDN Web Docs: Equality (==) and strict equality (===) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality (dostęp: 2026-03-01)
  • ECMA-262 (ECMAScript Language Specification): Strict Equality Comparison — https://tc39.es/ecma262/multipage/abstract-operations.html#sec-strict-equality-comparison (dostęp: 2026-03-01)
  • javascript.info: Comparison — https://javascript.info/comparison (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja MDN: porównania i operatory równości w JavaScript
  • Specyfikacja ECMAScript: Strict Equality Comparison
  • Ćwiczenia: porównania wartości pochodzących z formularzy (string) z wartościami liczbowymi (number)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego