在《JavaScript高级程序设计》第17页原话是“String类型的独特之处在于,它是唯一没有固定大小的原始类型。”String原始类型不是存储在栈中的吗?那不是应该是固定大小的?谁能给出代码证明一下,String原始类型是可变的

解决方案 »

  1.   

    string本质上应该存的是指针,所以没有分配大小,内容可任意长
      

  2.   

    string不可变,不同的字符串通过不同的指针引用来使用。
      

  3.   

    这话的意思是 在语法层面 string可以初始化为任意长度的字符串 这跟存储在堆中或者是栈中没有关系
    如果你觉得因为可能造成栈溢出而认为string长度有限制 那存储在堆中也是可能溢出的 毕竟内存是有限的
    如果你觉得栈中的类型一定得有长度限制 那也是不对的 c++中任意类的实例都可以存储在栈中 难道c++中对类实例的大小有限制?
      

  4.   

    第二版29页
    ECMSScript中的字符串是不可变的,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。