[英]Unexpected output in javascript
我是javascript的初学者,并且得到了意外的输出
这是代码
<script type="text/javascript">
function add(a,b)
{
x = a+b;
return x;
}
var num1 = prompt("what is your no.");
var num2 = prompt("what is another no.")
alert(add(num1,num2));
</script>
它应该给出我们在提示时输入的两个数字之和的输出,但它只是将两个数字连接起来并弹出输出
这是因为prompt
函数返回的是String
而不是Number
。 因此,您实际上要做的是请求2个字符串,然后将它们连接起来。 如果要将两个数字加在一起,则必须将字符串转换为数字:
var num1 = parseFloat(prompt("what is your no."));
var num2 = parseFloat(prompt("what is another no."));
或更简单:
var num1 = +prompt("what is your no.");
var num2 = +prompt("what is another no.");
prompt
返回一个字符串,而不是数字。 +
用作加法和串联运算符。 使用parseInt
把字符串转换使用指定的基数(基数)数量,或parseFloat
如果他们为了有一个小数部分( parseFloat
只能在十进制)。 例如:
var num1 = parseInt(prompt("what is your no."), 10);
// radix -----^
要么
var num1 = parseFloat(prompt("what is your no."));
除了已经提供的答案之外:如果您正在使用parseInt()/ parseFloat(),请确保检查输入是否实际上是有效的整数或浮点数:
function promptForFloat(caption) {
while (true) {
var f = parseFloat(prompt(caption));
if (isNaN(f)) {
alert('Please insert a valid number!');
} else {
return f;
}
}
}
var num1 = promptForFloat('what is your no.');
// ...
当提示用户时,返回值为字符串,普通文本。
您应该将字符串转换为数字:
alert(add(parseInt(num1), parseInt(num2));
prompt
的返回值是一个字符串。 因此,您的add
函数对2个字符串执行+
运算符,从而将它们串联在一起。 首先将您的输入转换为int
以得到正确的结果。
function add(a,b)
{
x = parseInt( a ) + parseInt( b );
return x;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.