字符串好像是按值传递的,效率应该很低吧?求别让我自己试。

解决方案 »

  1.   

    反复赋值的时候是值传递你2个变量 来回赋值相同的字符串 修改其中一个 不就知道了
    几分钟自己就理解了
    别人说的你能信吗
    其实,js的字符串赋值是按引用传递的。理论上:你2个变量赋值同一个字符串,修改其中一个,另一个也会改变但是当你测试时就会发现根本无法对这个字符串对象本身进行任何修改。字符串的下标和length都是只读的,也不能设置自定义属性。想要改变字符串变量的内容你只有再次对其赋值一个新的字符串。也就是说js的字符串是引用传递的,但却不存在引用传递的任何特性。这么做的原因就是像楼主说的为提高效率。要测试是不是引用传递,可以把同一个字符串赋值给很多变量,看看浏览器占用内存会不会增加。
      

  2.   

    1M的字符串   估计得有10W字符吧
    如果使用的地方不多应该还好
    之前做过一个项目   局域网内的服务器返回值有30-50M  感觉也还好
      

  3.   


    直接写传递的应该就是引用,如果不放心,
    用字符串对象,不用直接量就行了
    var str = new String('abcd...');
    这样传递的必然是引用;