null va undefined

null — bu tilning kalit so‘zi bo‘lib, u odatda qiymatning yo‘qligini ifodalash uchun ishlatiladigan maxsus qiymatni anglatadi. null'ga typeof operatorini qo‘llaganimizda, u "object" satrini qaytaradi. Bu null'ni "hech qanday obyekt yo‘q" degan ma’noni anglatuvchi maxsus obyekt qiymati sifatida tasavvur qilish mumkinligiga ishora qiladi. Amalda esa, null odatda o‘zining alohida tipining yagona a’zosi sifatida qabul qilinadi va u nafaqat obyektlar, balki sonlar va satrlar uchun ham "qiymat yo‘qligini" bildirish uchun ishlatilishi mumkin. Ko‘pchilik dasturlash tillarida JavaScript'dagi null'ning muqobili mavjud: ehtimol siz uni NULL, nil yoki None nomlari bilan bilarsiz.

JavaScript'da qiymatning yo‘qligini bildiruvchi ikkinchi bir qiymat ham bor. undefined qiymati yanada chuqurroq ma’nodagi yo‘qlikni ifodalaydi. Bu — hali initsializatsiya qilinmagan (ya’ni, boshlang‘ich qiymat berilmagan) o‘zgaruvchilarning qiymati hamda mavjud bo‘lmagan obyekt xossasi yoki massiv elementining qiymatini so‘raganda olinadigan qiymatdir. Shuningdek, undefined qiymati aniq bir qiymat qaytarmaydigan funksiyalarning qaytaradigan qiymati va argument uzatilmagan funksiya parametrlarining qiymati hamdir. undefined — bu oldindan belgilangan global konstanta bo‘lib (null kabi til kalit so‘zi emas, garchi bu amalda muhim farq bo‘lmasa ham), u undefined qiymatiga initsializatsiya qilingan. Agar undefined qiymatiga typeof operatorini qo‘llasangiz, u "undefined" satrini qaytaradi. Bu esa ushbu qiymatning maxsus bir tipning yagona a’zosi ekanligini ko‘rsatadi.

Ushbu farqlarga qaramay, null ham, undefined ham qiymatning yo‘qligini bildiradi va ko‘pincha bir-birining o‘rnida ishlatilishi mumkin. == tenglik operatori ularni bir-biriga teng deb hisoblaydi. (Ularni bir-biridan farqlash uchun === qat’iy tenglik operatoridan foydalaning.) Ikkalasi ham "falsy" qiymatlardir: ya’ni, mantiqiy qiymat talab qilingan joyda ular false kabi ishlaydi. Na null'da, na undefined'da biron bir xossa yoki metod mavjud. Aslida, bu qiymatlarning xossasi yoki metodiga . yoki [] orqali murojaat qilish TypeError xatoligiga sabab bo‘ladi.

null va undefined: Muallifning yondashuvi

Men shaxsan undefined'ni tizim darajasidagi, kutilmagan yoki xatolikka o‘xshash qiymat yo‘qligi, null'ni esa dastur darajasidagi, normal yoki kutilgan qiymat yo‘qligi deb bilaman. Iloji boricha null va undefined'ni ishlatmaslikka harakat qilaman. Lekin agar o‘zgaruvchi yoki xossaga bu qiymatlardan birini tayinlashim, funksiyaga uzatishim yoki funksiyadan qaytarishim kerak bo‘lib qolsa, men odatda null'ni ishlataman. Ba’zi dasturchilar esa null'dan butunlay qochishga intilib, iloji boricha uning o‘rniga undefined'ni ishlatadilar.