繁体   English   中英

JavaScript意外输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM