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.
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
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.
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.
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:
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:
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 „!”:
console.log(!null); // true console.log(!!null); // false
Interesujący jest jeszcze taki przypadek:
//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:
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ął 😀