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.