JavaScript asoslari

Taqqoslashlar

Ko'p taqqoslash operatorlarini matematikadan bilamiz. JavaScript'da ular quyidagicha yoziladi: katta/kichik > <, katta yoki teng / kichik yoki teng >= <=, teng ==, teng emas !=. Bu darsda ularning JavaScript'ga xos nozik tomonlarini o'rganamiz.

Taqqoslash natijasi โ€” boolean

Barcha taqqoslash operatorlari mantiqiy qiymat qaytaradi: true (rost) yoki false (yolg'on):

taqqoslash-boolean.js
// natija shu yerda chiqadi

Matnlarni taqqoslash

Bir matn ikkinchisidan katta yoki kichikligini bilish uchun JavaScript leksikografik (lug'atdagi) tartibdan foydalanadi: matnlar belgi-belgi solishtiriladi:

matn-taqqoslash.js
// natija shu yerda chiqadi

Algoritm quyidagicha ishlaydi:

  1. Ikki matnning birinchi belgilari solishtiriladi;
  2. Agar birinchisiniki kattaroq bo'lsa โ€” birinchi matn kattaroq va tugadi;
  3. Agar teng bo'lsa โ€” keyingi belgilar solishtiriladi;
  4. Belgilar tugaguncha davom etadi; qaysi matn uzunroq bo'lsa, o'sha kattaroq (agar boshi bir xil bo'lsa).
Bu "lug'atdagi" tartib emas, balki Unicode tartibi. Har bir belgining raqamli kodi bor. Katta harflar (A-Z) kichik harflardan (a-z) oldin keladi, shuning uchun "B" < "a" rost bo'ladi.

Turli tur qiymatlarini taqqoslash

Turli turdagi qiymatlarni >, < bilan solishtirganda JavaScript ularni songa o'giradi:

turli-tur.js
// natija shu yerda chiqadi

Qattiq tenglik === (uch teng)

Oddiy == tekshiruvining muammosi bor: u 0 va false ni farqlay olmaydi, chunki turlarni songa o'giradi:

tenglik-muammo.js
// natija shu yerda chiqadi

Bu chalkashlikning oldini olish uchun qattiq tenglik operatori === ishlatiladi. U turlarni o'girmaydi โ€” agar a va b turlari boshqa bo'lsa, a === b darhol false qaytaradi:

qattiq-tenglik.js
// natija shu yerda chiqadi

Xuddi shunday, qattiq tengsizlik operatori !== ham bor:

qattiq-tengsizlik.js
// natija shu yerda chiqadi
Deyarli har doim === va !== dan foydalaning. Ular xatosiz va bashorat qilinadigan natija beradi. == ni faqat aniq maqsad bilan ishlating.

null va undefined bilan taqqoslash tuzoqlari

Bu qiymatlar taqqoslashda alohida va "g'alati" ishlaydi. Diqqat bilan o'rganamiz.

Qattiq tenglik ===

null === undefined โ€” false bo'ladi, chunki ular turli turlar:

null-strict.js
// natija shu yerda chiqadi

Oddiy tenglik ==

null == undefined esa true bo'ladi. Bu maxsus qoida: == uchun ular bir-biriga teng, lekin boshqa hech qanday qiymatga teng emas:

null-loose.js
// natija shu yerda chiqadi

null va matematik taqqoslashlar

Eng qiziq tuzoq shu yerda. null > 0, null == 0 va null >= 0 ni birga ko'rsak, mantiqsizday tuyuladi:
null-tuzoq.js
// natija shu yerda chiqadi

Sabab: >, <, >=, <= operatorlari null ni songa (0 ga) o'giradi. Shuning uchun null >= 0 aslida 0 >= 0 bo'lib, true chiqadi. Ammo == operatori uchun alohida qoida bor: u null ni songa o'girmaydi va null faqat undefined ga teng deb hisoblaydi. Shuning uchun null == 0 false.

undefined bilan taqqoslash

undefined ni son bilan solishtirsak, natija doim false bo'ladi, chunki undefined songa o'girilganda NaN bo'ladi, va NaN har qanday taqqoslashda false beradi:

undefined-taqqoslash.js
// natija shu yerda chiqadi
Muammolardan qochish uchun oddiy qoida: null va undefined ni > < >= <= bilan ehtiyotsiz solishtirmang. Agar o'zgaruvchi shu qiymatlarga ega bo'lishi mumkin bo'lsa, avval alohida tekshiring.

Xulosa