Kolla här: Det är väl inte helt ologiskt om man accepterar implicita typkonverteringar (vilka iofs kan vara svåra att acceptera) : ja det är ju skitfränt..Va fan menar de?
http://devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/ident.html#1008306
Längst ner; innan "variables", står det följande:
In statements involving other operators, JavaScript does not convert numeric values to strings. For example:
"37" - 7 // returns 30
"37" + 7 // returns 377
Intressant sätt att räkna... =)Sv: Va fan menar de?
"37" - 7 // returns 30
Minus kan inte utföras på strängar så detta är uppenbart en numerisk operation. Alltså typkonverteras "37" till talet 37 och resultet blir givetvis 30.
"37" + 7 // returns 377
Plus är definierat på strängar så här gäller det att avgöra om "37" ska konverteras till ett numeriskt värde eller om 7 ska konverteras till en sträng. Om jag skrev en kompilator skulle jag föredra det sistnämnda eftersom den konverteringen inte kan misslyckas. Implicit konvertering till sträng har väl helt enkelt företräde före konvertering till numeriskt värde.
Det är sådant här som gör att man önskar att implicita typkonverteringar inte tilläts (annat än när den görs till en basklass då det ju är riskfritt antar jag) eller kanske att strängkonkateneringar alltid hade en egen operator...eller båda två...typ...Sv: Va fan menar de?
då kan man alltså göra:
"37" - 7
eller för + :
"37" - -7
:P
//Roger