我是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>
它应该将输出作为我们在提示时输入的两个数字的总和,但它只是连接两个数字并弹出输出
答案 0 :(得分:4)
这是因为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.");
答案 1 :(得分:1)
prompt
返回一个字符串,而不是一个数字。 +
用作添加和连接运算符。使用parseInt
可以使用指定的基数(数字基数)将字符串转换为数字,或parseFloat
如果它们具有小数部分(parseFloat
仅适用于小数)。 E.g:
var num1 = parseInt(prompt("what is your no."), 10);
// radix -----^
或
var num1 = parseFloat(prompt("what is your no."));
答案 2 :(得分:1)
除了已经提供的答案之外:如果您正在使用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.');
// ...
答案 3 :(得分:1)
当您提示用户时,返回值是一个字符串,普通文本。
你应该用数字转换字符串:
alert(add(parseInt(num1), parseInt(num2));
答案 4 :(得分:1)
prompt
的返回值是一个字符串。因此,您的add
函数会对2个字符串执行+
运算符,从而将它们连接起来。首先将输入转换为int
以获得正确的结果。
function add(a,b)
{
x = parseInt( a ) + parseInt( b );
return x;
}