问答详情
源自:5-2 定义函数

这里的加法运算,“+”是不是成了字符连接符,为什么其他运算都可以正常进行,就这个是把两个数连接起来输出呢?

  function sub2()                     //定义函数

 {

    var a = prompt("请输入前式:");

    var b = prompt("请输入后式:");


    var s = prompt("选择运算:");

    switch(s){

        case '-':

            sub=a-b;

            alert("a和b的差:"+sub);

            break;

        case '+':

            sub=a+b;

            alert("a和b的和:"+sub);

            break;

        case '*':

            sub=a*b;

            alert("a和b的积:"+sub);

            break;

        case '/':

            sub=a/b;

            alert("a和b的商:"+sub);

            break;

        default:

            alert("输入错误!");

            break;

    }

 }


提问者:I_can 2017-05-02 10:27

个回答

  • 慕勒7123956
    2017-05-02 10:41:35
    已采纳

    这其实是JavaScript为人诟病的一个地方,因为是动态类型的语言,每一个变量其实可以调有valueOf()和toString();这些方法交给运行环境去选择,通常在数值运算里面会优先调用valueOf();在字符串运算中会优先调用toString();比如这里面的+的运算符前面是一个字符串,所以就调用的toString()方法;


  • 天崇咏
    2020-06-09 16:40:31

    试了一下,你用parseInt把prompt包起来就没问题了