日期:2014-05-16  浏览次数:20473 次

向一个函数传递很大(应该不会超过1M)的字符串的时候会出现效率问题么?使用全局变量能将效率提高多少?
字符串好像是按值传递的,效率应该很低吧?求别让我自己试。

------解决方案--------------------
不,js的字符串其实是按引用传递的
------解决方案--------------------
引用:
Quote: 引用:

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

反复赋值的时候是值传递

你2个变量 来回赋值相同的字符串 修改其中一个 不就知道了
几分钟自己就理解了
别人说的你能信吗

其实,js的字符串赋值是按引用传递的。

理论上:你2个变量赋值同一个字符串,修改其中一个,另一个也会改变

但是当你测试时就会发现根本无法对这个字符串对象本身进行任何修改。字符串的下标和length都是只读的,也不能设置自定义属性。

想要改变字符串变量的内容你只有再次对其赋值一个新的字符串。

也就是说js的字符串是引用传递的,但却不存在引用传递的任何特性。这么做的原因就是像楼主说的为提高效率。

要测试是不是引用传递,可以把同一个字符串赋值给很多变量,看看浏览器占用内存会不会增加。


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