⊗jsPmBsATC 43 of 505 menu

Automatisk typekonvertering

Som du allerede ved, skal strenge i JavaScript sættes i anførselstegn. Det kan ske, at alle tegnene i strengen er cifre:

let a = '123';

I dette tilfælde er variablen a også en streng, men med en vis nuance.

Essensen af nuancen er følgende: hvis du udfører en matematisk operation på en streng med cifre - vil denne operation blive udført som om, vi faktisk har tal, og ikke strenge:

alert('2' * '3'); // viser 6

I dette tilfælde ser JavaScript, at vi forsøger at udføre en ugyldig operation for strenge, men en gyldig en for tal.

Det ser også, at vores strenge faktisk - er tal i anførselstegn. Derfor udfører JavaScript automatisk konvertering af disse strenge til tal og udfører den tilsvarende matematiske operation på dem.

Dette virker, hvis vores strenge kun indeholder cifre. Hvis der er mindst ét bogstav - vil JavaScript betragte operationen som ugyldig og gøre dens resultat til værdien NaN:

alert('2' * '3s'); // viser NaN

Derudover sker der automatisk konvertering, hvis operationen er matematisk korrekt, men ugyldig for strenge.

For eksempel kan strenge ikke (mens tal kan) ganges, divideres, trækkes fra, så i alle sådanne operationer vil der ske automatisk konvertering af strenge med cifre til tal.

Derimod lægges strenge, ligesom tal, sammen ved hjælp af operatoren +. Det betyder, at i tilfælde af addition vil der ikke ske automatisk konvertering:

let a = '1' + '2'; alert(a); // viser '12' - der skete streng-koncatenering

Hvis den ene operande er et tal, og den anden - er en streng, vinder strengen altid:

let a = 1 + '2'; alert(a); // viser '12'

I sådanne tilfælde konverterer JavaScript, tværtimod, automatisk tal til strenge og udfører streng-koncatenering.

Der er dog nuancer, når der er mere end to operander: i dette tilfælde afhænger konverteringen til en bestemt type af rækkefølgen af operationer.

I det følgende eksempel vil 2 og 3 først blive lagt sammen som tal, og derefter vil resultatet blive lagt sammen med strengen '1' allerede som strengen '5', hvilket i sidste ende giver strengen '15':

let a = '1' + (2 + 3); alert(a); // viser '15'

Hvis man fjerner parenteserne, vil alt blive lagt sammen fra venstre mod højre. Det vil sige, at først vil tallet 2 blive lagt til strengen '1', og som et resultat vil strengen '12' blive opnået. Derefter vil tallet 3 blive lagt til denne streng, og som et resultat vil strengen '123' blive opnået:

let a = '1' + 2 + 3; alert(a); // viser '123'

Men i det følgende eksempel står tallene 2 og 3 i starten, så først vil de blive lagt sammen som tal, hvilket giver resultatet tallet 5, og derefter vil strengen '1' blive lagt til dette tal, hvilket i sidste ende giver strengen '51':

let a = 2 + 3 + '1'; alert(a); // viser '51'

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

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

Uden at køre koden, skal du bestemme, hvad der vil blive vist på skærmen:

let a = '' + 3 + 1; alert(a);
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis