javascript中的意外输出
我是javascript的初学者,我得到了意想不到的输出 这是密码javascript中的意外输出,javascript,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 anothe
<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>
它应该将我们在提示时输入的两个数字的总和作为输出,但它只是将两个数字串联起来并弹出输出,这是因为提示函数返回的是字符串而不是数字。因此,您实际上要做的是请求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 -----^
或
除了已经提供的答案之外:如果您使用的是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函数对两个字符串执行+运算符,从而将它们连接起来。首先将输入转换为int以获得正确的结果
function add(a,b)
{
x = parseInt( a ) + parseInt( b );
return x;
}
@如果这回答了你的问题,那么它的运作方式就是你接受答案。详细信息:var num1=promptForFloat‘您的编号是多少’;这里我们指定,如果用户在提示中错误地输入了字符串,则应输入一个数字。我们应该有一个捕获来处理此异常。我不太清楚您的意思-如果您不希望函数继续询问,只需删除while循环并抛出异常,而不是执行警报。除了提供的答案,只要+a++b也可以工作。
function add(a,b)
{
x = parseInt( a ) + parseInt( b );
return x;
}