Skip to content

Instantly share code, notes, and snippets.

@gokhancerk
Last active July 8, 2021 06:41
Show Gist options
  • Save gokhancerk/b8c44d19dedfa75e8a11819000e2c77b to your computer and use it in GitHub Desktop.
Save gokhancerk/b8c44d19dedfa75e8a11819000e2c77b to your computer and use it in GitHub Desktop.
null vs undefined karmaşası

JS öğrenirken genelde null değerine boş değer denilip geçilir herhalde öğrenenin kafası karışmasın diye detaya girmiyor instructorlar fakat bu sefer undefined ile karıştırılabiliyor ve bunun ayrımını yapmak bir karmaşaya dönüşmeye başlıyor.

bu değerlerin typeof'una bakıldığında

typeof null // object
typeof undefined // undefined

halbuki null primitive value idi yani JS'de bir değer object değilse primitive'dir fakat primitive ama typeof'u object bu nasıl oluyor?

MDN dökümanına baktığımda konu bilgisayar bilimleriyle ilişkili. Bilgisayar bilimlerinde bir null değeri hafızada kasten boş bir adresi temsil eder ve bunun her dilde implementasyonu farklı. JS'deki implementasyonu ise null primitive value olarak belirlenmiş çünkü davranışı görünüşte ilkeldir.

Şimdi görünüşte ilkel derken primitive değerler immutable idi yani değiştirilemezler ve primitive değerlerin methodları da yoktur dolayısıyla aynı davranışı null değerinde de görmekteyiz.

Fakat bazı durumlarda null göründüğü kadar ilkel değil çünkü her obje(object) null değerinden türüyor bu nedenle olsa gerek kasten hafızada boş bir değeri gösteriyor ve yine bu nedenle typeof operatörü object'i return ediyor.

Kaynaklar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment