Տվյալների տիպերի ավտոմատ փոխակերպում

Ինչպես արդեն գիտեք, JavaScript-ում տողերը պետք է վերցնել չակերտների մեջ։ Կարող է լինել, որ տողի բոլոր նիշերը կլինեն թվանշաններ․

javascriptlet a = '123';

Այս դեպքում a փոփոխականը նույնպես տող է, բայց որոշ նրբությամբ։

Նրբության էությունը հետևյալն է․ եթե թվանշաններով տողի վրա կատարենք ինչ-որ մաթեմատիկական գործողություն, ապա այդ գործողությունը կկատարվի այնպես, կարծես մենք իսկապես ունենք թվեր, այլ ոչ թե տողեր․

javascriptalert('2' * '3'); // կցուցադրի 6

Այս դեպքում JavaScript-ը տեսնում է, որ մենք փորձում ենք կատարել անընդունելի տողերի, բայց ընդունելի թվերի գործողություն։

Այն նաև տեսնում է, որ փաստացի մեր տողերը - դա չակերտներում գրված թվեր են։ Ուստի JavaScript-ը ավտոմատ կերպով կատարում է այդ տողերի թվերի փոխակերպում և կատարում է համապատասխան մաթեմատիկական գործողություն դրանց վրա։

Սա աշխատում է, եթե մեր տողերում միայն թվանշաններ կան։ Եթե այնտեղ լինի գոնե մեկ տառ - JavaScript-ը գործողությունը կհամարի ոչ ճիշտ և դրա արդյունքը կդարձնի NaN արժեքը․

javascriptalert('2' * '3s'); // կցուցադրի NaN

Բացի այդ, ավտոմատ փոխակերպում տեղի է ունենում, եթե գործողությունը մաթեմատիկորեն ճիշտ է, բայց անընդունելի է տողերի համար։

Օրինակ, տողերը չեն կարող (իսկ թվերը կարող են) բազմապատկվել, բաժանվել, հանվել, ուստի բոլոր նման գործողություններում կլինի թվանշաններով տողերի ավտոմատ փոխակերպում թվերի։

Սակայն, տողերը, ինչպես և թվերը, գումարվում են + օպերատորի միջոցով։ Սա նշանակում է, որ գումարման դեպքում ավտոմատ փոխակերպում չի լինի․

javascriptlet a = '1' + '2';
alert(a); // կցուցադրի '12' - տեղի է ունեցել տողերի գումարում

Եթե գումարելիներից մեկը թիվ է, իսկ մյուսը՝ տող, ապա միշտ հաղթում է տողը․

javascriptlet a = 1 + '2';
alert(a); // կցուցադրի '12'

Նման դեպքերում JavaScript-ը, ընդհակառակը, ավտոմատ կերպով փոխակերպում է թվերը տողերի և կատարում է տողերի գումարում։

Սակայն, կան նրբություններ, երբ գումարելիների թիվը ավելի շատ է, քան երկուսը․ այս դեպքում որոշակի տիպի փոխակերպումը կախված է գործողությունների կատարման հերթականությունից։

Հաջորդ օրինակում նախ 2-ը և 3-ը կգումարվեն որպես թվեր, ապա արդյունքը կգումարվի '1' տողին արդեն որպես '5' տող, որն ի վերջո կտա '15' տողը․

javascriptlet a = '1' + (2 + 3);
alert(a); // կցուցադրի '15'

Եթե փակագ�երը հանենք, ապա ամեն ինչ կգումարվի ձախից աջ։ Այսինքն նախ '1' տողին կգումարվի 2 թիվը և արդյունքում կստացվի '12' տողը։ Ապա այս տողին կգումարվի 3 թիվը և արդյունքում կստացվի '123' տողը․

javascriptlet a = '1' + 2 + 3;
alert(a); // կցուցադրի '123'

Իսկ հաջորդ օրինակում 2 և 3 թվերը գրված են սկզբում, ուստի նախ դրանք կգումարվեն որպես թվեր, տալով արդյունքում 5 թիվը, ապա այդ թվին կգումարվի '1' տողը, տալով վերջնարդյունքում '51' տողը․

javascriptlet a = 2 + 3 + '1';
alert(a); // կցուցադրի '51'
Задание 1

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' + '2';
alert(a);
Задание 2

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' + 2;
alert(a);
Задание 3

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = 5 + '2';
alert(a);
Задание 4

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = 5 + 2;
alert(a);
Задание 5

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' * '2';
alert(a);
Задание 6

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' - '2';
alert(a);
Задание 7

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' / '2';
alert(a);
Задание 8

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' % '2';
alert(a);
Задание 9

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5s' * '2';
alert(a);
Задание 10

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5s' + '2';
alert(a);
Задание 11

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = (-'5') + (-'2');
alert(a);
Задание 12

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' * 1 + '2' * 1;
alert(a);
Задание 13

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '5' * '1' + '2' * '1';
alert(a);
Задание 14

Առանց կոդը գործարկելու, որոշեք, թե ինչ կցուցադրվի էկրանին․

javascriptlet a = '' + 3 + 1;
alert(a);