Konvertimi Automatik i Tipit të të Dhënave
Siç e dini tashmë, vargjet në JavaScript duhet të mbyllen me thonjëza. Mund të ndodhë që të gjithë simbolet e vargut të jenë shifra:
let a = '123';
Në këtë rast, ndryshorja a është gjithashtu
një varg, por me një nuancë.
Thelbi i nuancës është si vijon: nëse kryhet një operacion matematikor mbi një varg me shifra - ky operacion do të ekzekutohet sikur kemi me të vërtetë numra, jo vargje:
alert('2' * '3'); // do të shfaqë 6
Në këtë rast, JavaScript sheh që ne po përpiqemi të kryejmë një operacion të palejueshëm për vargjet, por të lejueshëm për numrat.
Ai gjithashtu sheh që në fakt vargjet tona - janë numra breza thonjëzave. Prandaj JavaScript kryen automatikisht konvertimin e këtyre vargjeve në numra dhe kryen operacionin përkatës matematikor mbi to.
Kjo funksionon nëse në vargjet tona ka vetëm
shifra. Nëse aty do të ketë të paktën një shkronjë
- JavaScript do ta konsiderojë operacionin të palejueshëm
dhe do ta bëjë rezultatin e tij vlerën NaN:
alert('2' * '3s'); // do të shfaqë NaN
Përveç kësaj, konvertimi automatik ndodh nëse operacioni është matematikisht i saktë, por i palejueshëm për vargjet.
Për shembull, vargjet nuk munden (por numrat mund) të shumëzohen, pjesëtohen, zbriten, prandaj në të gjitha operacione të tilla do të ketë konvertim automatik të vargjeve me shifra në numra.
Sidoqoftë, vargjet, ashtu si numrat, mblidhen
me ndihmën e operatorit +. Kjo do të thotë
që në rastin e mbledhjes nuk do të ketë konvertim automatik:
let a = '1' + '2';
alert(a); // do të shfaqë '12' - ka ndodhur mbledhja e vargjeve
Nëse njëri prej termave është numër, dhe tjetri - është varg, gjithmonë fiton vargu:
let a = 1 + '2';
alert(a); // do të shfaqë '12'
Në raste të tilla, JavaScript, përkundrazi, automatikisht i kthen numrat në vargje dhe kryen mbledhjen e vargjeve.
Ka, megjithatë, nuanca, kur ka më shumë terma se dy: në këtë rast, konvertimi në një tip të caktuar varet nga radha e ekzekutimit të operacioneve.
Në shembullin vijues fillimisht 2 dhe 3
do të mblidhen si numra, dhe pastaj rezultati do t'i shtohet
vargut '1' tashmë si varg '5',
që në fund do të japë vargun '15':
let a = '1' + (2 + 3);
alert(a); // do të shfaqë '15'
Nëse i heqim kllapat, atëherë gjithçka do të mblidhet
nga e majta në të djathtë. Domethënë fillimisht vargut '1'
do t'i shtohet numri 2 dhe si rezultat
do të fitohet vargu '12'. Pastaj këtij
vargu do t'i shtohet numri 3 dhe si rezultat
do të fitohet vargu '123':
let a = '1' + 2 + 3;
alert(a); // do të shfaqë '123'
Por në shembullin vijues numrat 2
dhe 3 janë shkruar në fillim, prandaj fillimisht
ata do të mblidhen si numra, duke dhënë si rezultat
numrin 5, dhe pastaj këtij numri do t'i shtohet
vargu '1', duke dhënë në fund vargun '51':
let a = 2 + 3 + '1';
alert(a); // do të shfaqë '51'
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' + '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' + 2;
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = 5 + '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = 5 + 2;
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' * '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' - '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' / '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' % '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5s' * '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5s' + '2';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = (-'5') + (-'2');
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' * 1 + '2' * 1;
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '5' * '1' + '2' * '1';
alert(a);
Pa e ekzekutuar kodin, përcaktoni çfarë do të shfaqet në ekran:
let a = '' + 3 + 1;
alert(a);