Źródło: Arkusze CKE
Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?
console.log(typeof null);
console.log(typeof undefined);
console.log(typeof []);
console.log(typeof NaN);
Warianty odpowiedzi
-
A
object, undefined, array, number
-
B
object, undefined, object, number
-
C
null, undefined, array, number
-
D
null, undefined, object, NaN
Wyjaśnienie
To pytanie dotyka kilku znanych niuansów języka JavaScript.
Po pierwsze, typeof null zwraca object. Jest to znany błąd z pierwszych wersji JavaScriptu, który pozostał w języku ze względu na kompatybilność wsteczną.
Dla undefined sprawa jest prosta, wynik to undefined. Z kolei tablice w JavaScript są pod maską obiektami, dlatego dla [] otrzymujemy object.
Na koniec NaN, czyli Not-a-Number. Mimo że oznacza błąd operacji matematycznej, z punktu widzenia specyfikacji JS technicznie należy do typu liczbowego, stąd wynik number.