Każdy kto zaczynał, bądź zaczyna przygodę z JavaScript na pewno zwrócił uwagę na dwa kluczowe słowa null i undefined. Dziś pokaże pewne ciekawostki związane z tymi przypadkami, mam nadzieję, że pomogą one każdemu kto choć raz próbował zabawy z js’em, zapraszam 🙂
Null oraz undefined są typami. W JavaScript undefined oznacza, że zmienna została zadeklarowana ale jeszcze nie ma żadnej przypisanej wartości.
1 2 |
var temp; console.log(temp); // undefined |
Gdy powyższy kod uruchomimy na konsoli zobaczymy wynik undefined, dzieje się tak ponieważ zmienna temp została zadeklarowana, ale nie przypisano do niej żadnej wartości, nie została zainicjalizowana.
Zmieńmy ten stan i do zmiennej temp przypiszmy wartość null
1 2 |
temp = null console.log(temp); // null |
Po uruchomieniu nasza zmienna ma wartość null. Null może być reprezentowane jako wartość, bezwartości, inaczej mówiąc możemy przypisać do zmiennej temp pudełko z cyferką 5, albo samo pudełko, samo pudełko jest nullem.
1 2 3 4 |
var a; var b; a = 5; // wyobraź sobie, że przypisujemy pudełko z zawartością 5. b = null;// wyobraź sobie, że przypisujesz puste pudełko. |
Console.log pokazuje, że null jest typem null, czyli obiektem, poniżej dobrze widać sens tego zdania 🙂 czym jest null.
1 2 3 |
var c = null; console.log(c); // null console.log(typeof c) // object null |
Na dzień dobry trochę pokręcone, no nie? 🙂 Przykład z undefined jest bardziej sensowny:
1 2 3 |
var c; console.log(c); // undefined console.log(typeof c) // object undefined |
Typem undefined jest undefined. Teraz rodzi się pytanie czy null jest tym samym co undefined? sprawdźmy:
1 2 3 4 |
console.log(null === undefined); // false console.log(null == undefined); // true console.log(null === null); // true console.log(null == null); // true |
Dlaczego potrójny znak porównania(===) daje false? ponieważ === sprawdza typ i wartość, jeżeli jedna składowa ma inny typ to z góry nie można takiego przypadku sprawdzić.
Teraz zrobimy myk w postaci „nie null” czyli negacja „!”:
1 2 |
console.log(!null); // true console.log(!!null); // false |
Interesujący jest jeszcze taki przypadek:
1 2 3 4 5 |
//w takim przypadku można "założyć", że null jest zerem. console.log(1 + null); // 1 //w tym przypadku można "założyć", że undefined nie jest liczbą. console.log(1 + undefined); // Nan |
Jeszcze jeden przykład:
1 2 |
null = 'value' // ReferenceError undefined = 'value' // 'value' |
Podsumowując, null i undefined teraz mam nadzieje choć trochę pomogło zrozumieć to zestawienie. Undefined to po prostu coś co jest „niczym” wiemy, że jest ale jest nie traktowane jako cokolwiek, null w zależności od przykładu jest jakimś bytem.
Pozdro 🙂
Ooo Panie, na podsumowaniu to żeś popłynął 😀