string类型的长度不是固定的,为何也算原始类型呢?确实存贮在“栈”中吗?初学javascript,有点不解,一般对于原始类型,都是所占空间固定的,但是字符串型,所占空间不固定呀,为何也是原始类型呢?另外,空间不固定,也存储在“栈”中吗?不是存在“堆”中吗?

解决方案 »

  1.   

    固定的。兄弟,你要清楚,虽然你可以操作变量,但是不代表字符串常量是可变的
    var a = "hello" //
    a = "hello world"
    其实这个时候a指向的内存已经改变了。
      

  2.   

    java中string是final的,不可改变的
    String a = "abc";
    a = "abcd";//a的内存地址发生了变化,有原来执行abc指向了abcd;但内存中还是有2个对象 abc、abcd的
    a = "abc";//又指向了abc,jvm会判断abc在内存中是否存在,如果存在就改变指针指向的位置,
              //不存在就开辟内存,并创建一个abc
      

  3.   

    是JS吧
    大大们都说到哪去了
    JS中string是原始类型,原始值是存放在栈中的
    就是说 var str = "abc";
    str 和 abc 都是存在栈里面
    LS说的string可变,并不是原始值的变化,而是生成一个新的string去存到新的位置去
    所以string放哪里和它的可变与否无关