Տվյալների տիպերի ավտոմատ փոխակերպում
Ինչպես արդեն գիտեք, JavaScript-ում տողերը պետք է վերցնել չակերտների մեջ։ Կարող է լինել, որ տողի բոլոր նիշերը կլինեն թվանշաններ․
let a = '123';
Այս դեպքում a փոփոխականը նույնպես
տող է, բայց որոշ նրբությամբ։
Նրբության էությունը հետևյալն է․ եթե թվանշաններով տողի վրա կատարենք ինչ-որ մաթեմատիկական գործողություն, ապա այդ գործողությունը կկատարվի այնպես, կարծես մենք իսկապես ունենք թվեր, այլ ոչ թե տողեր․
alert('2' * '3'); // կցուցադրի 6
Այս դեպքում JavaScript-ը տեսնում է, որ մենք փորձում ենք կատարել անընդունելի տողերի, բայց ընդունելի թվերի գործողություն։
Այն նաև տեսնում է, որ փաստացի մեր տողերը - դա չակերտներում գրված թվեր են։ Ուստի JavaScript-ը ավտոմատ կերպով կատարում է այդ տողերի թվերի փոխակերպում և կատարում է համապատասխան մաթեմատիկական գործողություն դրանց վրա։
Սա աշխատում է, եթե մեր տողերում միայն
թվանշաններ կան։ Եթե այնտեղ լինի գոնե մեկ տառ
- JavaScript-ը գործողությունը կհամարի ոչ ճիշտ
և դրա արդյունքը կդարձնի NaN արժեքը․
alert('2' * '3s'); // կցուցադրի NaN
Բացի այդ, ավտոմատ փոխակերպում տեղի է ունենում, եթե գործողությունը մաթեմատիկորեն ճիշտ է, բայց անընդունելի է տողերի համար։
Օրինակ, տողերը չեն կարող (իսկ թվերը կարող են) բազմապատկվել, բաժանվել, հանվել, ուստի բոլոր նման գործողություններում կլինի թվանշաններով տողերի ավտոմատ փոխակերպում թվերի։
Սակայն, տողերը, ինչպես և թվերը, գումարվում են
+ օպերատորի միջոցով։ Սա նշանակում է,
որ գումարման դեպքում ավտոմատ փոխակերպում
չի լինի․
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);