Javascript Number & String erklæring

stemmer
0

Jeg prøver å forstå at hvordan kan jeg få en ekte logikk på følgende Javascript-kode:

var x = 10;
var y = 20;
var result = x + y;
document.getElementById(demo).innerHTML = result;

link: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_add_strings4

Utgangen av følgende kode er = 1020 i tillegg -operasjon. I mitt sinn tror jeg det er riktig fordi det er den sammensetning av to tall som en streng.

var x = 100;
var y = 10;
var z = x / y;   
document.getElementById(demo).innerHTML = z;

link: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_string1

Men resultatet av følgende kode er = 10 i Division drift og det er kan ikke telle dette to tall som en String. Det beregnes to tall som nummer. **** Vennligst noen hjelpe meg å at jeg vil være å forstå det tydelig. ****

Publisert på 02/09/2018 klokken 05:05
kilden bruker
På andre språk...                            


6 svar

stemmer
0

Jeg foreslår å lese dette for deg.

http://2ality.com/2013/04/quirk-implicit-conversion.html

Primitive Type Antall: Operere annen type, valueof () -> toString () -> Typeerror

Primitive typen String: Kjør annen type, toString () -> valueof () -> Feiltype

Svarte 02/09/2018 kl. 05:53
kilden bruker

stemmer
0

Javascript er et løst skrevet språk. Dette betyr at vi kan gjøre regnestykket med strenger, (f.eks "100" / "10" === 10) og Javascript innser automatisk det skal tolke disse strengene som tall.

Men hvorfor er ikke "10" + "20"lik 30?

Javascript (kanskje dårlig) velger å bruke samme operatør ( +) for streng sammensetning samt tillegg. Dette betyr at de måtte bestemme om antall lignende strenger bør tolkes som strenger eller som tall i denne saken, og streng sammensetning vant. Faktisk, selv "10" + 20og 10 + "20"og 10 + "2" + 0vil alle utbytte "1020". Hvis det er en streng sted , vinner streng sammensetning.

Svarte 02/09/2018 kl. 05:35
kilden bruker

stemmer
0
var a  = "1022";            //variable a&b takes a string.
var b = "2";     
var c = a/b;                //a and b are converted to number type implicitly 
                            //because strings have no function with '/'.
document.write(c + "<br>"); //prints division between a and b (a/b).
c = toString();             //converts c to string explicitly.
document.write(c);          //shows an error as i said string cant be divided!.

Gi meg beskjed hvis jeg hjalp!

Svarte 02/09/2018 kl. 05:31
kilden bruker

stemmer
0

I javascript operator "+" behandles som sammensetning operatør om noen av argumentene er strengen og "/" divisjon operatøren bare "divisjon operasjon assosiert med det.

Svarte 02/09/2018 kl. 05:21
kilden bruker

stemmer
0

I javascript, divisjon operatør konverterer implictly strenger til tall og utføre divisjon Men for tillegg javascript anser det som streng og utføre sammensetning.

Svarte 02/09/2018 kl. 05:17
kilden bruker

stemmer
0

Javascript gjør sitt beste for å gi deg et rimelig svar uansett hva slags data du gir den. I din første eksempelet ser det du søker på + operatøren to strenger. Dette er en gyldig ting for den å gjøre (sammensetning), slik at ingen tvang utføres - de to strengene er sammensatt.

I ditt andre eksempel ser det du søker den / operatør til to strenger. Dette er ikke en gyldig ting å gjøre, men å bruke det operatøren tallene ville være gyldig, og strengene du ga det både kan være representert som tall, så det er hva det gjør. Den konverterer dem til tall og deretter utfører denne divisjonen.

Denne bilen tvang kan være svært praktisk (du trenger ikke å bekymre deg nesten så mye om typer i Javascript som i andre språk). Noen ganger kan det også være litt farlig i at det kan gi deg resultater du ikke forvente, men når du kommer til å forstå hvordan og når tvang er brukt, minsker faren noen.

Svarte 02/09/2018 kl. 05:17
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more