字符串的定义是由Unicode字符,数字,标点符号等组成的序列。数字转换为字符串后,字符串中的数字和之前的数字有什么区别啊? 难道只是加了个引号?记得原来学c的时候, 有个题是把数字转换为ASCII字符。和这里不是一回事吧。
有点晕。

解决方案 »

  1.   

    在内存里占用的空间也不同吧,比如32bit系统下整数12345占4个字节,字符串'12345'占用5个字节~
      

  2.   

    回复于:2011-03-19 00:03:18
    从2进制的角度来看比如 数字1 2进制是 00000001
      字符1 2进制是 00001010(字符1转换成的2进制是我乱写的 只是告诉你区别)
    --------------------------------------------
    我想知道的就是在js 的字符串里面, 数字是转换为字符吗? 但定义是可以用数字啊? 
    js 不是用16位Unicode 表示字符。 但是数字不属于字符是吧。数字应该不是16位吧?
      

  3.   

    关键你要明白js的隐式类型转换机制,假设n = 2;在你不经过任何操作的时候,n的这个2是不变化的,类型仍然是number(javascript 只有number,没有所谓的int 和 float)n = n + 2;这时候,检测的+运算,首先要验证运算2边的类型是否一样,n是number,2是number对象直接量,也是number,所以直接参与运算n = n + '2';检测的+运算, 验证发现一个是number,一个是string,这时+已经不是number运算的+(虽然表面看起来都一样)了,而是字符串连接符号+了(因为至少要一个string运算元),所有现在发生一个隐身转换number->string,然后才参与运算,那么就相当于// 仅仅表达意思
    n = n.toString() + '2';
    那么,问题回来了,你觉得 n 和 n.toString() 仅仅是引号的区别吗?
      

  4.   

    var a = "1";
    a = a/1;
    alert(typeof a);
    这时 a 已经是number了,
    机器把一个表示数字1的内存地址指向 a,原来字符串“1”的地址,已经不存在了。
      

  5.   

    隐式转换,在必要的运算时会自动转换,字符运算时number会自动转为string