problem z dodawaniem liczb

0

Stworzyłem u siebie prosty kod w języku Java script o dodawaniu dwóch wartości x i y.
var x = 5;
var y = 4;
alert(x+y);

W wyniku powinno wystąpić 9, ale wychodzi 54. Jeśli ktoś miałby sposób na rozwiązanie tego to bardzo bym prosił o szybką odpowiedź.

1
alert( parseInt(x)+ parseInt(y) );

p.s.
U mnie w Chrome i FF pokazuje 9.
Wydaje mi się, że nie pokazałeś całego kodu.
Owszem 54 ale w takim przypadku:

var x = '5';
var y = 4;
alert(x+y);
// daje wynik 54

natomiast

var x = 5;
var y = 4;
alert(x+y);
// daje wynik 9

Chodzi o to w jaki sposób JS nadaje priorytety typom w wyrażeniach. W JS zarówno suma liczb jak i sklejanie łańcuchów realizuje operator "+" w związku z tym interpreter musi mieć zdefiniowane odgórnie zasady, który z tych typów będzie "dominujący" w operacji.

0

Dzięki
p.s.
Jak zdefiniować typ realizacji operatora "+"

U mnie w kodzie jest:
var x = prompt("insert the number");
var y = prompt("insert the next number");
alert(x+y);

I wtedy pojawia się ten błąd.

3

JS to dziwny język.


var x = '5';
var y = 4;
alert(-(-x + -y));

A w opisanym przypadku:

var x = prompt("insert the number") * 1;
var y = prompt("insert the next number") * 1;
alert(x+y);
1

@Freja Draco
nie ma nic dziwnego. Naturalne koleje rzeczy wynikające z korzystania języka bez jawnego typowania.
Po prostu trzeba mieć to na uwadze i stosować odpowiednie konwersje gdzie trzeba.

0

Już u mnie wszystko gra. Dzięki bardzo

1 użytkowników online, w tym zalogowanych: 0, gości: 1