过去几天我一直在尝试解决这个问题:当我对通过提示输入的 2 个数字进行减、乘或除时,一切正常;但是当我想添加它们时,我将两个数字简单地写在一起。
例子:如果我把 5 和 6 相加,我得到 56!
这是我正在使用的代码。
var a = prompt("Enter first number");
var b = prompt("Enter second number");
alert(a + b);
我究竟做错了什么?我必须指定值类型吗?
过去几天我一直在尝试解决这个问题:当我对通过提示输入的 2 个数字进行减、乘或除时,一切正常;但是当我想添加它们时,我将两个数字简单地写在一起。
例子:如果我把 5 和 6 相加,我得到 56!
这是我正在使用的代码。
var a = prompt("Enter first number");
var b = prompt("Enter second number");
alert(a + b);
我究竟做错了什么?我必须指定值类型吗?
该函数prompt
返回一个字符串并且+
是(不明智,也许)用于两个字符串连接和数目相加。
您不在 JavaScript 中“指定类型”,但您可以在运行时进行字符串到数字的转换。有很多方法可以做到这一点。最简单的是:
var a = +prompt("Enter first number");
var b = +prompt("Enter second number");
alert(a + b);
但你也可以这样做
var a = Number(prompt("Enter first number"));
var b = Number(prompt("Enter second number"));
alert(a + b);
(避免,parseInt
因为它只处理前导字符,不会像 4.5 和 2.6 这样的数字相加。)
问题在于 JavaScript 是松散类型的。因此,它不知道“5”实际上是一个数字,因为您从提示中收到的所有内容都是字符串。
你可以做:
var a = prompt("1st") * 1;
var b = prompt("2nd") * 1;
alert (a + b);
这是有效的,因为 * 运算符强制一切都像数字一样。
您正在使用串联运算而不是算术运算符。
在你上面的代码中:
alert(a + b);
您的浏览器编译器会将其视为串联。所以它连接了两个字符串。这就是为什么你会得到那个输出。
当您输入 var a 和 var b 时,变量可能设置为字符串(字符)而不是整数。
因此,当您使用 时,您a + b
会将这些字符放在一起。
为了确保您输入的值保存为整数,您可以使用
parseInt()
例如: var a = parseInt( prompt("Enter first number") );
试试这个 ,
var a = prompt("Enter first number");
var b = prompt("Enter second number");
var x=parseInt(a);
var y=parseInt(b);
alert(x+y);