Literallar


Download 60.09 Kb.
bet2/2
Sana06.02.2023
Hajmi60.09 Kb.
#1172291
1   2
Bog'liq
2 5224354929879026563

3.8. Turlarni almashtirish


JavaScript bir turni ikkinchi turga juda moslashuvchan almashtiradi. Biz bunga mantiqiy qiymatlardagi misol orqali ishonch hosil qilishimiz mumkin: JavaScript interpretator qayerda mantiqiy qiymat kutayotgan bo’lsa, istalgan turga mansub qiymatni ko’rsatishimiz mumkin, JavaScript avtomatik tarzda kerakli almashtirishni amalga oshiradi. Bir qiymat ture qiymatiga, boshqasi esa false qiymatiga almashtiriladi. Bu boshqa turlar uchun ham o’rinlidir: agar interpretator satr qabul qilishni kutayotgan bo’lsa, u istalgan boshqa turdagi qiymatni avtomatik tarzda satrga almashtiradi. Agar interpretator son qabul qilishni kutayotgan bo’lsa, mavjud qiymatni songa almashtirishga urunib ko’radi (imkoni bo’lmagan taqdirda bunday almashtirish NaN qiymatini oladi). Masalan:

10 + “ objects” // => “10 objects”. 10 soni satrga almash-
// tirilayabdi
“7” * “4” // => 28: har bir satr songa almashtiriladi
var n = 1-“x”; // => NaN: “x” satrini songa almashtirib
// bo’lmaydi
n + “ objects” // => “NaN objects”: NaN “NaN” satriga al-
// mashtirilayabdi

JavaScript bir turni boshqasiga qanday almashtirishi 3.2 jadvalda ko’rsatilgan.

Qiymat

Satr

Son

Mantiqiy qiymat

Ob’yekt




ga almashtirish

undefined

“undefined”

NaN

false

TypeError xatoligiga olib keladi

null

“null”

0

false

TypeError xatoligiga olib keladi

true

“true”

1




new Boolean(true)

false

“false”

0




new Boolean(false)

“” (bo’sh satr)




0

false

new String(“”)

“1.2” (bo’sh satr, son)




1.2

true

new String(“1.2”)

“one” (bo’sh emas satr, son emas)




NaN

true

new String(“one”)

0

“0”




false

new Number(0)

-0

“0”




false

new Number(-0)

NaN

“NaN”




false

new Number(NaN)

Infinity

“Infinity”




true

new Number(Infinity)

-Infinity

“-Infinity”




true

new Number(‑Infinity)

1 (noldan farqli chekli son)

“1”




true

new Number(1)

{} (istalgan ob’yekt)

bo’lim 3.8.3ga qarang

bo’lim 3.8.3ga qarang

true




[] (bo’sh massiv)

“”

0

true




[9] (bitta sonli element)

“9”

9

true




[‘a’] (istalgan boshqa massiv)

join() metodi ishlatiladi

NaN

true




function(){} (istalgan funksiya)

bo’lim 3.8.3ga qarang

NaN

true





3.8.1. Almashtirish va tenglik


JavaScriptda turlar almashishining moslashuvchanligi sharofati bilan tenglik operatori == ham qiymatlar tengligini moslashuvchan tarzda aniqlab beradi. Masalan, quyidagi barcha solishtirishlar true qaytaradi:

null == undefined // Bu ikki qiymat teng deb xisoblanadi
“0” == 0 // Solishtirishdan oldin satr songa al-
// mashtiriladi
0 == false // Solishtirishdan oldin mantiqiy qiymat
// songa almashtiriladi
“0” == false // Solishtirishdan oldin har bir operand
// songa almashtiriladi

Shuni bilish kerakki, bir qiymatni ikkinchisiga almashtirish imkoniyati bu qiymatlarning teng ekanligini anglatmaydi. Masalan, agar mantiqiy ifodada undefined qiymati ishlatilayotgan bo’lsa, u false qiymati bilan almashtiriladi. Lekin bu undefined == false ekanligini anglatmaydi. JavaScript operatorlari va instruksiyalari aniq bir turga mansib qiymat qabul qilinishini kutushadi va shu turlarga almashtirishlarni amalga oshiradi. if instruksiyasi undefined qiymatini falsega almashtiradi, lekin operator == hech qachon o’z operandlarini mantiqiy qiymatlarga almashtirishga urunmaydi.

3.8.2. Ochiqcha almashtirishlar

3.8.3. Ob’yektlarni oddiy qiymatlarga almashtirish

3.9. O’zgaruvchilarni e’lon qilish


JavaScriptda o’zgaruvchilarni ishlatishdan oldin, ularni e’lon qilish kerak. O’zgaruvchilar var kalit so’zi orqali quyidagi shaklda e’lon qilinadi:

var i;
var sum;

var kalit so’zini bir marta ishlatish orqali birdaniga bir necha o’zgaruvchilarni e’lon qilish mumkin:

var i, sum;

O’zgaruchilarni e’lon qilishni ularning initsializatsiyasi bilan birga ishlatish mumkin:

var message = “hello”;
var i = 0, j = 0, k = 0;

Agar var instruksiyasida o’zgaruvchiga boshlang’ich qiymat berilmagan bo’lsa, u holda o’zgaruvchi e’lon qilinadiyu lekin uning boshlang’ich qiymati dastur davomida berilmaguncha noaniq(undefined)ligicha qoladi.
JavaScriptda boshqa statik turli til (C, Java, Pascal, C++)lardan farqli bir o’zgaruvchi bir necha turdagi qiymatlarni qabul qilishi mumkin. O’zgaruvchining turi, u ichida saqlayotgan qiymatning turi bilan aniqlanadi. Masalan, JavaScriptda o’zgaruvchiga birinchi son qiymati o’zlashtirilgan bo’lsa, keyinchalik unga satr turiga mansub qiymat o’zlashtirishga ham ruxsat e’tiladi (faqatgina satr emas, istalgan turga mansub qiymat o’zlashtirish mumkin, bu faqat misol):

var i = 10;
i = “o\’n”;

3.9.1. Takroriy va qoldirilgan e’lon qilish


var instruksiyasi orqali bir o’zgaruvchini bir necha marta e’lon qilish mumkin. Agar takroriy e’lon qilishda initsializator bo’lsa, u holda e’lon qilish oddiy o’zlashtirish operatori kabi ishlaydi.
Agar e’lon qilinmagan o’zgaruvchining qiymatini o’qishga urunilsa, JavaScript xatolik qaytaradi. ECMAScript5da ko’zda tutilgan qattiq rejimda, e’lon qilinmagan o’zgaruvchiga qiymat kiritilganda ham xatolik yuz beradi. Qattiq rejimda bo’lmagan dasturda var instruksiyasi orqali e’lon qilinmagan o’zgaruvchiga qiymat berilganda bu o’zgaruvchi amaliy jihattad xuddi to’g’ri e’lon qilingan o’zgaruvchi kabi ishlaydi (faqat ba’zi farqlar bor, bu haqda 3.10.2 bo’limda). Bu global o’zgaruvchilarni e’lon qilmaslik ham mumkin ekanligini anglatadi. Lekin bunday qilish axmoqlik va xatolikni yuzaga keltirishi mumkin. Shuning uchun yaxshisi o’zgaruvchilarni e’lon qilishda var instruksiyasidan foydalanish kerak.

3.10. O’zgaruvchining ko’rinish hududi


O’zgaruvchining ko’rinish hududi – dasturning shu o’zgaruvchi aniqlangan bir bo’lagidir. Global o’zgaruvchi global ko’rinish hududiga ega – u JavaScript‑dasturning barcha hududlarida aniqlangan. Funksiya ichida e’lon qilingna o’zgaruvchi faqat shu funksiya tanasida aniqlangan (undan tashqarida mavjud emas). Ular lokal o’zgaruvchilar deb ataladi va lokal ko’rinish hududiga ega. Funksiya parametrlar ham faqat shu funksiya tanasida aniqlangan lokal o’zgaruvchilar deb xisoblanadi.
Funksiya ichidagi lokal o’zgaruvchi xuddi shu nomdagi global o’zgaruvchidan ustunlikka ega. Agar funksiya parametri yoki lokal o’zgaruvchisini xuddi global o’zgaruvchining nomi kabi e’lon qilinsa, u holda global o’zgaruvchi yashiriladi:

var scope = “global”; // Global o’zgaruvchini e’lon qilish
function checkScope() {
var scope = “local”; // Xuddi shu nomdagi lokal o’zgaruvchini e’lon
// qilish
return scope; // Global emas, lokal qiymat qaytaradi
}
checkScope(); // => “local”

3.10.1. Funksiyaning ko’rinish hududi va ko’tarish

3.10.2. O’zgaruvchi xususiyat sifatida

3.10.3. Ko’rinish hududining bo’glamlari


Download 60.09 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling