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):
Matnlarni taqqoslash
Bir matn ikkinchisidan katta yoki kichikligini bilish uchun JavaScript leksikografik (lug'atdagi) tartibdan foydalanadi: matnlar belgi-belgi solishtiriladi:
Algoritm quyidagicha ishlaydi:
- Ikki matnning birinchi belgilari solishtiriladi;
- Agar birinchisiniki kattaroq bo'lsa โ birinchi matn kattaroq va tugadi;
- Agar teng bo'lsa โ keyingi belgilar solishtiriladi;
- Belgilar tugaguncha davom etadi; qaysi matn uzunroq bo'lsa, o'sha kattaroq (agar boshi bir xil bo'lsa).
"B" < "a" rost bo'ladi.Turli tur qiymatlarini taqqoslash
Turli turdagi qiymatlarni >, < bilan solishtirganda JavaScript ularni songa o'giradi:
Qattiq tenglik === (uch teng)
Oddiy == tekshiruvining muammosi bor: u 0 va false ni farqlay olmaydi, chunki turlarni songa o'giradi:
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:
Xuddi shunday, qattiq tengsizlik operatori !== ham bor:
=== 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:
Oddiy tenglik ==
null == undefined esa true bo'ladi. Bu maxsus qoida: == uchun ular bir-biriga teng, lekin boshqa hech qanday qiymatga teng emas:
null va matematik taqqoslashlar
null > 0, null == 0 va null >= 0 ni birga ko'rsak, mantiqsizday tuyuladi: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:
null va undefined ni > < >= <= bilan ehtiyotsiz solishtirmang. Agar o'zgaruvchi shu qiymatlarga ega bo'lishi mumkin bo'lsa, avval alohida tekshiring.Xulosa
- Taqqoslash operatorlari boolean qaytaradi;
- Matnlar belgi-belgi, Unicode tartibida (leksikografik) solishtiriladi;
- Turli tur qiymatlari
> <uchun songa o'giriladi; ==turlarni o'giradi,===o'girmaydi โ===ni afzal ko'ring;null == undefinedtrue, lekin ular boshqa hech narsaga teng emas;null >= 0true, lekinnull == 0false โ bu tuzoqdan ehtiyot bo'ling.