⊗jsPmBsATC 43 of 505 menu

Automātiskā datu tipu pārveidošana

Kā jūs jau zināt, virknes JavaScript ir jāieliek pēdiņās. Var gadīties, ka visi virknes simboli būs cipari:

let a = '123';

Šajā gadījumā mainīgais a arī ir virkne, bet ar noteiktu niansi.

Nanses būtība ir sekojoša: ja virknei ar cipariem veic kādu matemātisku darbību - šī darbība tiks izpildīta tā, it kā mums patiešām būtu skaitļi, nevis virknes:

alert('2' * '3'); // izvadīs 6

Šajā gadījumā JavaScript redz, ka mēs mēģinām izpildīt virknēm neatļautu, bet skaitļiem atļautu darbību.

Tas arī redz, ka faktiski mūsu virknes - ir skaitļi pēdiņās. Tāpēc JavaScript automātiski pārveido šīs virknes par skaitļiem un izpilda atbilstošo matemātisko darbību ar tiem.

Tas strādā, ja mūsu virknēs ir tikai cipari. Ja tur būs vismaz viens burts - JavaScript uzskatīs darbību par nekorektu un padarīs tās rezultātu par vērtību NaN:

alert('2' * '3s'); // izvadīs NaN

Turklāt automātiska pārveidošana notiek, ja darbība ir matemātiski korekta, bet nav atļauta virknēm.

Piemēram, virknes nevar (bet skaitļus var) reizināt, dalīt, atņemt, tāpēc visās šādās darbībās būs automātiska virkņu ar cipariem pārveidošana skaitļos.

Tomēr virknes, tāpat kā skaitļus, saskaita ar operatoru +. Tas nozīmē, ka saskaitīšanas gadījumā automātiskas pārveidošanas nebūs:

let a = '1' + '2'; alert(a); // izvadīs '12' - notika virkņu saskaitīšana

Ja viens no saskaitāmajiem ir skaitlis, bet otrs - virkne, tad vienmēr uzvar virkne:

let a = 1 + '2'; alert(a); // izvadīs '12'

Šādos gadījumos JavaScript, gluži pretēji, automātiski pārveido skaitļus par virknēm un veic virkņu saskaitīšanu.

Tomēr ir nianses, kad saskaitāmie ir vairāk nekā divi: šajā gadījumā pārveidošana par noteiktu tipu ir atkarīga no darbību izpildes secības.

Nākamajā piemērā vispirms 2 un 3 tiks saskaitīti kā skaitļi, un tad rezultāts tiks pieskaitīts virknei '1' jau kā virkne '5', kas galu galā dos virkni '15':

let a = '1' + (2 + 3); alert(a); // izvadīs '15'

Ja noņemam iekavas, tad viss tiks saskaitīts no kreisās puses uz labo. Tas ir, vispirms virknei '1' tiks pieskaitīts skaitlis 2 un rezultātā veidosies virkne '12'. Pēc tam šai virknei tiks pieskaitīts skaitlis 3 un rezultātā veidosies virkne '123':

let a = '1' + 2 + 3; alert(a); // izvadīs '123'

Bet nākamajā piemērā skaitļi 2 un 3 ir rakstīti sākumā, tāpēc vispirms tie tiks saskaitīti kā skaitļi, dodot rezultātā skaitli 5, un pēc tam šim skaitlim tiks pieskaitīta virkne '1', dodot galu galā virkni '51':

let a = 2 + 3 + '1'; alert(a); // izvadīs '51'

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

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

Neveicot kodu, nosakiet, ko izvadīs uz ekrāna:

let a = '' + 3 + 1; alert(a);
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt