mucahid
.dev
  • Home
  • About
  • Projects
  • Blog
  • Media
  • Contact
  • Links
en

The story of NULL

Written by Mucahid Yazar on November 17, 2021

instagramlinkedincodepenmail
The story of NULL
javascript
undefined
difference
null

undefined, JavaScriptde kesin yoklu─ču s├Âyleyen bir primitive valuedir. undefined, 1998 de JavaScript 1.3 e kadar direct olarak eri┼čilebilir de─čildi. Buda bize nullÔÇÖun o zaman, bir de─čerin olmad─▒─č─▒n─▒ a├ž─▒k├ža s├Âyleyen bir de─čer olarak kullan─▒ld─▒─č─▒ i├žin tasarland─▒─č─▒n─▒ s├Âyler. Initialize olmam─▒┼č de─čerler otomatik olarak undefined de─čerini al─▒rlar. undefined ise ECMAScript spesificationslar─▒nda t├╝r tiplerinden birisidir.

null objectlerde kas─▒tl─▒ istenilen, b─▒rak─▒lan yoklu─ču ifade eden primitive valuedir. null da ECMAScript spesificationslar─▒nda t├╝r tiplerinden birisidir.

JavascriptÔÇÖte null Java ile birlikte ├žal─▒┼čabilirli─či sa─članmak amac─▒yla tasarland─▒. Hem g├Âr├╝n├╝m perspektifinden, hemde programlama perspektifinden ├Ât├╝r├╝. Hem Brendan Eich hemde di─čer geli┼čtiriciler, 2 absence yani yokluk valuesinin olmas─▒ndan ho┼čnut olmad─▒klar─▒n─▒ ifade ettiler fakat 1995 de yinede EichÔÇÖe Javascripti Javaya benzetme emri verdiler.

E─čer y├Ânetimden ÔÇťJava gibi yapÔÇŁ emrini almasayd─▒m ve daha fazla zaman─▒m olsayd─▒ (Bu iki sebebi ├ž├Âzmek zordu), ÔÇťHer┼čey bir objectÔÇŁ mant─▒─č─▒na benze bir approach tercih ederdim. Yani Boolean, Number, String sarmalay─▒c─▒lar─▒ yok, undefined null yok gibi. Ahh.
Brendan Eich:

Javan─▒n strongly-typed yap─▒s─▒ndan ├Ât├╝r├╝ null sadece typed variableslara yani typeÔÇÖ─▒ belirli variablelara assign edilebiliyordu. Ve Eich, javadaki null konseptine uyum sa─člamas─▒ amac─▒yla null i├žin object prototype chaninin en ├╝st├╝nde ├Âzel bir konum se├žti. (i.e.(yani) the top of the reference types). Ve null type ─▒n─▒, ÔÇťobject-type primitivesÔÇŁ ─▒n bir par├žas─▒ oalrak dahil etti. Bu y├╝zden typeof null, ÔÇśnullÔÇÖ de─čil ÔÇśobjectÔÇÖ┬ád├Âner.

Typeof operat├Âr├╝, 19 Agustos 1996ÔÇÖda JavaScript 1.1 releases─▒nden k─▒sa bir s├╝re sonra┬áeklendi.

typeof null ===┬áÔÇśobjectÔÇÖ

From the V8 blog:

typeof null, null un kendisinin bir type olmas─▒na ra─čmen null de─čil object return eder. Nedenini anlamak i├žin Javascriptteki typeslar─▒n 2 gruba ayr─▒ld─▒─č─▒n─▒ d├╝┼č├╝n├╝n.

1. objects (i.e. the Object type)

2. primitives (i.e. any non-object value)

Bu y├╝zden null ÔÇťno object valueÔÇŁ anlam─▒ndayken, undefined ÔÇťno valueÔÇŁ anlam─▒ndad─▒r. Daha iyi anlamak i├žin a┼ča─č─▒da ki grafi─če┬ábakal─▒m.

Bu d├╝┼č├╝nce ├žizgisini takip ederek, Brendan Eich JavaScriptÔÇÖi, Java ruhu i├žinde, sa─č taraftaki t├╝m de─čerler, yani t├╝m objectler ve null de─čerler i├žin typeof return ÔÇśobjectÔÇÖ yapmak ├╝zere tasarlad─▒. ─░┼čte bu niye typeof null === ÔÇśobjectÔÇÖ niye null de─čilin sebebidir.

Bu y├╝zden Eich, primitive typeslar─▒n hiyera┼čisini Java ile uyumluluk sa─člayabilmesi i├žin tasarlad─▒. Buda onu null i├žin ÔÇťobject-type primitivesÔÇŁ larda pozisyonlamas─▒na ├Ânc├╝l├╝k etti. Bunu yans─▒tmak i├žinde, nulldan sonra Javascripte typeof eklendi─činde, typeof null un ÔÇťobjectÔÇŁ d├Ânmesini se├žti.

Javascript geli┼čtiricileri aras─▒nda typeof null === ÔÇťobjectÔÇŁ s├╝prizi, hem null hemde undefined a sahip weakly-typed language (JavaScript) ile sadece null a sahip bir ba┼čka strongly-typed language (Java) aras─▒nda bir impedance mismatch (or abstraction leak) olarak ifade edildi. Ki Javada null, bir primitive type a de─čil, kesinlikle bir reference type ─▒na at─▒fta bulunmak i├žin tasarlanm─▒┼čt─▒r.

Bunlar─▒n hepsi mant─▒kl─▒, a├ž─▒klanabilir ve savunulabilir. typeof null === "object" bir bug de─čil fakat Java ile birlikte ├žal─▒┼čabilir olmas─▒n─▒n ikinci dereceden bir┬áetkisi.

undefined─▒n bir valuenin yokluk durumunu g├Âstermesi ve null─▒n ├Âzellikle bir objectin yokluk durumunu g├Âstermesi dahil bir dizi geriye d├Ân├╝k akla yatk─▒n hale getirme conventions─▒ ortaya┬á├ž─▒kt─▒.

Brendan Eich in bu konuyla alakal─▒ ilgili konu┼čmas─▒n─▒ g├Ârsel olarak a┼ča─č─▒ya b─▒rak─▒yorum.

BrendanEich on Twitter: "JS was supposed to interconnect with Java, including object refs that could be null. Blame Java, yet again. / Twitter"

JS was supposed to interconnect with Java, including object refs that could be null. Blame Java, yet again.

Comments

6 Comments

BOOST YOUR FRONTEND CAREER

THE FRONTEND DEVELOPER