⊗jsPmBsATC 43 of 505 menu

Маълумот турларини автомат ўзгартириш

Сиз билганингиздек, JavaScriptда сатрлар қошиқ ичга олинади. Сатрнинг барча белгилари рақамлардан иборат бўлиши мумкин:

let a = '123';

Бунда a ўзгарувчиси ҳам сатрдир, лекин бир муаммо билан.

Муаммо шундаки: агар рақамли сатр устида қандайдир математик амал бажарса - бу амал бизда чиндан ҳам рақамлар, сатрлар эмасдек бажарилади:

alert('2' * '3'); // 6 ни кўрсатади

Бунда JavaScript биз сатрлар учун нотўғри, лекин рақамлар учун тўғри бўлган амални бажаришга уринаётганимизни кўради.

У шуни ҳам кўрадики, аслида бизнинг сатрларимиз - қошиқ ичидаги рақамлардир. Шу сабаб JavaScript бу сатрларни рақамларга автомат ўзгартириб, улар устида мос математик амални бажаради.

Бундай ишлайди, агар бизнинг сатрларимизда фақат рақамлар бўлса. Агар у ерда ҳеч бўлмағанда битта ҳарф бўлса - JavaScript амални нотўғри деб ҳисоблайди ва унинг натижаси NaN қиймати бўлади:

alert('2' * '3s'); // NaN ни кўрсатади

Бундан ташқари, автомат ўзгартириш амал математик жиҳатдан тўғри бўлса, лекин сатрлар учун нотўғри бўлганда ҳам sodir бўлади.

Масалан, сатрларни (рақамларни бўлса мумкин) купайтириш, бўлиш, айириб ташлаш мумкин эмас, шунинг учун барча бундай амалларда рақамли сатрларни рақамларга автомат ўзгартириш sodir бўлади.

Бирок, сатрлар, рақамлар каби, + оператори орқали қўшилади. Демак, қўшиш амалида автомат ўзгартириш бўлмайди:

let a = '1' + '2'; alert(a); // '12' ни кўрсатади - сатрлар қўшилди

Агар қўшилувчилардан бири рақам, иккинчиси - сатр бўлса, ҳар доим сатр ғолиб чиқади:

let a = 1 + '2'; alert(a); // '12' ни кўрсатади

Бундай ҳолларда JavaScript, аксинча, рақамларни сатрларга автомат ўзгартиради ва сатрларни қўшади.

Бирок, қўшилувчилар иккитадан кўп бўлганда муаммолар бор: бунда аник турга ўзгартириш амалларнинг бажариш тартибига боғлиқ.

Куйидаги мисолда аввал 2 ва 3 рақамлар сифатида қўшилади, сўнгра натижа '1' сатрига '5' сатри сифатида қўшилади, натижада '15' сатри ҳосил бўлади:

let a = '1' + (2 + 3); alert(a); // '15' ни кўрсатади

Агар қавслар олиб ташланса, ҳамма нарса чапдан ўнгга қараб қўшилади. Яъни аввал '1' сатрига 2 рақами қўшилиб, натижада '12' сатри ҳосил бўлади. Сўнгра бу сатрга 3 рақами қўшилиб, натижада '123' сатри ҳосил бўлади:

let a = '1' + 2 + 3; alert(a); // '123' ни кўрсатади

Ана эндиги мисолда 2 ва 3 рақамлари бошда ёзилган, шунинг учун аввал улар рақам сифатида қўшилиб, натижада 5 рақами ҳосил бўлади, сўнгра бу рақамга '1' сатри қўшилиб, натижада '51' сатри ҳосил бўлади:

let a = 2 + 3 + '1'; alert(a); // '51' ни кўрсатади

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' + '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' + 2; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = 5 + '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = 5 + 2; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' * '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' - '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' / '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' % '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5s' * '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5s' + '2'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = (-'5') + (-'2'); alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' * 1 + '2' * 1; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '5' * '1' + '2' * '1'; alert(a);

Кодни ишлатмасдан, экранга нама чиқишини аниқланг:

let a = '' + 3 + 1; alert(a);
Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш