⊗jsPmBsATC 43 of 505 menu

Automatska konverzija tipova podataka

Kao što već znate, stringove u JavaScript-u treba stavljati u navodnike. Može se desiti da svim karakterima stringa budu cifre:

let a = '123';

U ovom slučaju promenljiva a je takođe string, ali sa određenim nijansama.

Suština nijanse je sledeća: ako nad stringom sa ciframa izvršite bilo koju matematičku operaciju - ta operacija će biti izvršena kao da zaista imamo brojeve, a ne stringove:

alert('2' * '3'); // ispisaće 6

U ovom slučaju JavaScript vidi da pokušavamo da izvršimo nedozvoljenu za stringove, ali dozvoljenu za brojeve operaciju.

On takođe vidi da su naši stringovi zapravo brojevi u navodnicima. Zato JavaScript automatski izvršava konverziju ovih stringova u brojeve i izvršava odgovarajuću matematičku operaciju nad njima.

Ovo funkcioniše ako u našim stringovima postoje samo cifre. Ako tamo bude bar jedno slovo - JavaScript će smartati operaciju nevalidnom i rezultat će biti vrednost NaN:

alert('2' * '3s'); // ispisaće NaN

Osim toga, automatska konverzija se dešava ako je operacija matematički validna, ali nedozvoljena za stringove.

Na primer, stringove se ne može (a brojeve može) množiti, deliti, oduzimati, pa će u svim takvim operacijama doći do automatske konverzije stringova sa ciframa u brojeve.

Međutim, stringovi se, kao i brojevi, sabiraju pomoću operatora +. To znači da u slučaju sabiranja neće doći do automatske konverzije:

let a = '1' + '2'; alert(a); // ispisaće '12' - došlo je do sabiranja stringova

Ako je jedan sabirak broj, a drugi - string, uvek pobedjuje string:

let a = 1 + '2'; alert(a); // ispisaće '12'

U ovakvim slučajevima JavaScript, naprotiv, automatski konvertuje brojeve u stringove i izvršava sabiranje stringova.

Postoje, međutim, nijanse kada ima više sabiraka, nego dva: u ovom slučaju konverzija ka određenom tipu zavisi od redosleda izvršavanja operacija.

U sledećem primeru prvo će se 2 i 3 sabrati kao brojevi, a zatim će rezultat biti dodat stringu '1' već kao string '5', što će na kraju dati string '15':

let a = '1' + (2 + 3); alert(a); // ispisaće '15'

Ako se uklone zagrade, onda će se sve sabirati sleva na desno. To znači da će se prvo stringu '1' dodati broj 2 i kao rezultat će se dobiti string '12'. Zatim će se ovom stringu dodati broj 3 i kao rezultat će se dobiti string '123':

let a = '1' + 2 + 3; alert(a); // ispisaće '123'

U sledećem primeru brojevi 2 i 3 su napisani na početku, pa će se prvo sabrati kao brojevi, dajući kao rezultat broj 5, a zatim će se ovom broju dodati string '1', dajući na kraju string '51':

let a = 2 + 3 + '1'; alert(a); // ispisaće '51'

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

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

Bez pokretanja koda, odredite šta će se ispisati na ekran:

let a = '' + 3 + 1; alert(a);
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij