javascript中的意外输出

时间:2012-03-25 12:08:18

标签: 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>

它应该将输出作为我们在提示时输入的两个数字的总和,但它只是连接两个数字并弹出输出

5 个答案:

答案 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;
    }