我需要添加两个数字但不知何故它们是连接在一起的。我在哪里做错了?
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);
它连接结果而不是添加。
答案 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));
也许可以考虑开始用理智的语言学习编程。