⊗jsPmBsATC 43 of 505 menu

Automatikus típuskonverzió

Mint már tudod, a JavaScript-ben a stringeket idézőjelek közé kell tenni. Előfordulhat, hogy a string minden karaktere szám:

let a = '123';

Ebben az esetben az a változó is egy string, de egy árnyalattal.

Az árnyalat a következő: ha egy számokat tartalmazó stringen valamilyen matematikai műveletet hajtunk végre - ez a művelet úgy fog lefutni, mintha valóban számokkal dolgoznánk, nem stringekkel:

alert('2' * '3'); // kiírja 6-ot

Ebben az esetben a JavaScript látja, hogy olyan műveletet próbálunk végrehajtani, amely a stringekre nem megengedett, de a számokra igen.

Azt is látja, hogy a stringjeink valójában idézőjelek közé tett számok. Ezért a JavaScript automatikusan átalakítja ezeket a stringeket számokká, és végrehajtja a megfelelő matematikai műveletet rajtuk.

Ez akkor működik, ha a stringjeinkben csak számjegyek vannak. Ha ott akár egyetlen betű is szerepel - a JavaScript érvénytelennek fogja tekinteni a műveletet és az eredménye az NaN érték lesz:

alert('2' * '3s'); // kiírja NaN-t

Ezen kívül automatikus konverzió történik, ha a művelet matematikailag korrekt, de a stringekre nem megengedett.

Például a stringeket nem lehet (de a számokat lehet) szorozni, osztani, kivonni, ezért minden ilyen műveletben automatikus átalakítás történik a számokat tartalmazó stringekből számokká.

Azonban a stringek, akárcsak a számok, összeadhatók a + operátorral. Ez azt jelenti, hogy összeadás esetén nem történik automatikus konverzió:

let a = '1' + '2'; alert(a); // kiírja '12'-t - stringek összeadása történt

Ha az egyik tag szám, a másik pedig string, akkor mindig a string nyer:

let a = 1 + '2'; alert(a); // kiírja '12'-t

Ilyenkor a JavaScript éppen ellenkezőleg, automatikusan átalakítja a számokat stringekké, és végrehajtja a stringek összeadását.

Vannak azonban árnyalatok, amikor kettőnél több tag van: ebben az esetben a konverzió egy adott típusra a műveletek végrehajtási sorrendjétől függ.

A következő példában először a 2 és a 3 összeadódik számként, majd az eredmény hozzáadódik a '1' stringhez már mint '5' string, ami végül a '15' stringet adja:

let a = '1' + (2 + 3); alert(a); // kiírja '15'-öt

Ha viszont eltávolítjuk a zárójeleket, akkor minden balról jobbra fog összeadódni. Azaz először a '1' stringhez adódik hozzá a 2 szám, és az eredmény a '12' string lesz. Majd ehhez a stringhez adódik hozzá a 3 szám, és az eredmény a '123' string lesz:

let a = '1' + 2 + 3; alert(a); // kiírja '123'-at

Viszont a következő példában a 2 és a 3 számok az elején vannak, így először ők adódnak össze számként, ami az eredmény a 5 szám lesz, majd ehhez a számhoz adódik hozzá a '1' string, ami végül a '51' stringet adja:

let a = 2 + 3 + '1'; alert(a); // kiírja '51'-et

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

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

A kód futtatása nélkül határozd meg, mi jelenik meg a képernyőn:

let a = '' + 3 + 1; alert(a);
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás