Maglumat Görnüşleriniň Awtomatik Öwrülişi
Bilşiňiz ýaly, JavaScript-da setirler dyrnak içine alynmaly. Setiriň ähli nyşanlary san bolup biler:
let a = '123';
Bu ýagdaýda üýtgeýji a hem setir bolýar,
ýöne käbir nýuans bilen.
Nýuans şonda: eger sanlardan ybarat setir üstünde haýsy-da bolsa bir matematik amal ýerine ýetirilse - bu amal, hakykatdanam bizde setir däl-de sanlarymyz bar ýaly, ýerine ýetiriler:
alert('2' * '3'); // 6 çykar
Bu ýagda JavaScript, biz setirler üçin ýaramsyz, ýöne sanlar üçin ýaramly amaly ýerine ýetirmekçi bolýandygymyzy görýär.
Şeýle hem, ol biz setirlerimiziň aslynda dyrnak içine alynan sanlar ýaly bolýandyklaryny görýär. Şonuň üçin JavaScript bu setirleri sanlara awtomatik öwürýär we olaryň üstünde degşilikli matematik amaly ýerine ýetirýär.
Bu işleýär, eger setirlerimizde diňe sanlar
bolsa. Olarda iň bolmanda bir harp bolsa
- JavaScript amaly nädogry hasaplar we
onyň netijesi NaN bahasy bolar:
alert('2' * '3s'); // NaN çykar
Şeýle hem, awtomatik öwrüliş amal matematik täjiginden dogry bolan, ýöne setirler üçin ýaramly bolmadyk ýagdaýlarda hem bolýar.
Mysal üçin, setirleri (ýöne sanlary bolsa) köpeltmek, bölmek, aýyrmak bolmaýar, şonuň üçin şeýle ähli amallarda sanlardan ybarat setirleriň sanlara awtomatik öwrülişi bolar.
Şeýle-de, setirler hem, sanlar ýaly, +
operator arkaly goşulýar. Bu bolsa, goşmak ýagdaýynda
awtomatik öwrüliş bolmajakdygyny aňladýar:
let a = '1' + '2';
alert(a); // '12' çykar - setirleriň goşulmagy boldy
Eger goşulýanlaryň biri san, beýlekisi bolsa setir bolsa, hemişe setir ýeňýär:
let a = 1 + '2';
alert(a); // '12' çykar
Şeýle ýagdaýlarda JavaScript, tersine, sanlary setirlere awtomatik öwürýär we setirleriň goşulmagyny ýerine ýetirýär.
Ýöne, goşulýanlar iki-den köp bolanda käbir nýuanslar bar: bu ýagda belli bir görnüşe öwrüliş amallaryň ýerine ýetiriliş tertibine bagly.
Aşakdaky mysalda ilki 2 we 3
san hökmünde goşular, soňra bolsa netije setir
'1'-a '5' setiri hökmünde goşular,
bu bolsa netijede '15' setirini berer:
let a = '1' + (2 + 3);
alert(a); // '15' çykar
Eger ýaýlary aýyrsak, onda ähli zadyň ýerine ýetirilişi
çepden sag tarapa bolup geçer. Ýagny ilki setir '1'
san 2 bilen goşular we netijede
setir '12' bolup çykar. Soňra bu
setir san 3 bilen goşular we netijede
setir '123' bolup çykar:
let a = '1' + 2 + 3;
alert(a); // '123' çykar
Şeýle-de aşakdaky mysalda sanlar 2
we 3 başynda ýazylan, şonuň üçin ilki
olar san hökmünde goşular, netijede
san 5 berer, soňra bolsa bu sana
setir '1' goşular, netijede setir '51' berer:
let a = 2 + 3 + '1';
alert(a); // '51' çykar
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' + '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' + 2;
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = 5 + '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = 5 + 2;
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' * '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' - '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' / '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' % '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5s' * '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5s' + '2';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = (-'5') + (-'2');
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' * 1 + '2' * 1;
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '5' * '1' + '2' * '1';
alert(a);
Kody işletmezden, ekrana näme çykjakdygyny kesgitle:
let a = '' + 3 + 1;
alert(a);