正好看到一个题目,看起来很简单,但是我只做对了第一个和第四个,求解啊!!!
var a1=10;
var a2=20;
a3 = a1 + a2
alert("a1+a2="+a3)  //a1+a2= 30
alert("a1+a2="+a1+a2)  //a1+a2= 1020
alert("a1+a2="+Number(a1)+Number(a2)) //a1+a2= 1020
alert("a1+a2="+Number(a1+a2)) //a1+a2= 30

解决方案 »

  1.   

    alert("a1+a2="+a1+a2) //a1+a2= 1020  第一个数是字符串 所以是字符串拼接alert("a1+a2="+Number(a1)+Number(a2)) //a1+a2= 1020 跟没加 Number 没区别 还是 字符串拼接alert("a1+a2="+Number(a1+a2)) //a1+a2= 30 相当于给后两个带一个小括号  优先执行 所以是 两个 数值相加
      

  2.   

    我现在想是大概明白什么意思,但是就是不明白为什么a3是a1+a2,输出a3就是30;第二个alert中也是a1+a2输出的就是1020啊?
    还有化成number它也不管,还是输出1020
    是不是alert的处理方式和上面的不一样啊?
      

  3.   

    当一个字符串""加上如何一个变量,相当于连接。如"10"+20="1020"而不是30!!!
    减号倒是可以运算!!!如alert("20"-"10")//输出10
    不知楼主懂没?
      

  4.   

    不好意思,还是不太明白...那是不是只有在alert中才把a1当做字符串?
    那为什么减号有可以当做数字呢?
      

  5.   

    根据三楼做了个测试得到如下结果
    var a1=10;
    var a2=20;
    a3 = a1 + a2
    alert("a1+a2="+a3)  //a1+a2= 30
    alert("a1+a2="+a1+a2)  //a1+a2= 1020
    alert("a1+a2="+a2-a1)  //NaN
    alert("a1+a2="+(a2-a1))  //a1+a2= 10
    alert("a1+a2="+Number(a1)+Number(a2)) //a1+a2= 1020
    alert("a1+a2="+Number(a1+a2)) //a1+a2= 1020
    仍然没有解决之前的问题
      

  6.   

    终于明白了,谢谢大家,贴出测试代码
    var a1=10;
    var a2=20;
    a3 = a1 + a2 //数字加数字
    alert(typeof(a3))  //number
    alert("a1+a2="+a3)  //a1+a2= 30
    alert(typeof("a1+a2="+a3))  //字符串“a1+a2”加数字a3;得到的是字符串,输出string
    alert("a1+a2="+a1+a2)  //a1+a2= 1020
    alert(typeof("a1+a2="+a3))  //string
    alert("a1+a2="+a2-a1)  //NaN
    alert("a1+a2="+(a2-a1))  //a1+a2= 10
    alert("a1+a2="+Number(a1)+Number(a2)) //a1+a2= 1020
    alert("a1+a2="+Number(a1+a2)) //a1+a2= 1020
    alert(typeof("a1+a2="+Number(a1+a2))) //string