数字连接而不是加在一起

时间:2014-06-22 12:33:37

标签: javascript

我需要添加两个数字但不知何故它们是连接在一起的。我在哪里做错了?

var a;
var b;
var parsedInta;
var parsedIntb;

a=window.prompt("enter your first number");
b=window.prompt("enter your second number");
parsedInta=parseInt(a);
parsedIntb=parseInt(b);

alert("The Sum is" + parsedInta+parsedIntb);

它连接结果而不是添加。

4 个答案:

答案 0 :(得分:3)

您必须引入括号以强制在构建警报字符串之前进行数字添加:

alert("The Sum is " + (parsedInta + parsedIntb));

没有括号,+运算符自然是左关联的,所以第一个"加法"执行的是字符串连接" Sum是"和第一个值(被视为字符串)。

编辑 - 请注意,+运算符更喜欢字符串连接数字加法。如果+的任一操作数是一个字符串,那么另一个操作数将转换为字符串,并且这两个操作数将被连接。

答案 1 :(得分:-1)

这是因为+运算符也用于字符串连接。因为在"The Sum is" + parsedInta+parsedIntb中你正在使用字符串,语言认为你想使用parseinta和parseintb作为字符串。

您可以通过在创建字符串之前简单地进行求和来解决:

var sum  = parseInta + parseIntb;
alert("The Sum is" + sum);

或者也可以直接在sum行中使用parseInt:

var sum = parseInt(a) + parseInt(b);
alert("The Sum is" + sum);

答案 2 :(得分:-1)

问题在于你正在使用" +"进行隐式类型转换。运算符,它将数字转换为字符串,所以你的代码将是:

alert("the sum is "+number1+number2); //The number 1 will be converted to a string
,the same for the second number

因此,如果我在第一个提示符中输入10,在第二个提示符中输入10,则警报将显示:总和为1010,因为前10个转换为字符串,第二个10将转换为字符串
如果我使用括号,如:

 alert("the sum is "+(number1+number2));

此处将添加两个数字,并且在添加后将隐藏为字符串。 P.S:不要使用窗口对象,因为它是一个全局对象,所以你可以忽略它 抱歉我的英语不好,希望你能理解

答案 3 :(得分:-3)

这是JavaScript。不要期望这种语言有意义。


这是因为+运算符因字符串而重载。如果其操作数之一是字符串,+将另一个操作数转换为字符串并连接它们。

由于这个糟糕的运算符也是左关联的,你将得到

("The Sum is" + parseInta) + parsedIntb

这是一个字符串加上一个数字(这是一个字符串)加上一个数字,它也是一个字符串。

代替最右边的添加:

alert("The Sum is" + (parsedInta + parsedIntb));

也许可以考虑开始用理智的语言学习编程。