Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的意外输出_Javascript - Fatal编程技术网

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

我是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>
它应该将我们在提示时输入的两个数字的总和作为输出,但它只是将两个数字串联起来并弹出输出,这是因为提示函数返回的是字符串而不是数字。因此,您实际上要做的是请求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;
    }