js字符串拼接


var str = "hello ";
str = str + "world";

上述方法的内存过程:
1、为a分配栈内存
2、创建堆内存存入字符串"hello",并将堆地址赋值到a的栈内。
3、创建堆内存存入字符串"world"。
4、创建存储结果的堆内存。
5、把str的值复制到结果中。
6、把"world"复制到结果中。
7、更新str的值,使它指向结果。
每次完成字符串连接都会执行步骤 3 到 6,使得这种操作非常消耗资源。
如果重复这一过程几百次,甚至几千次,就会造成性能问题。

解决方法是
用 Array 对象存储字符串,然后用 join() 方法生成结果

var arr = new Array();
arr[0] = "hello ";
arr[1] = "world";
var str = arr.join("");

//性能更优
var buffer = new StringBuffer ();
buffer.append("hello ");
buffer.append("world");
var result = buffer.toString();

注:字符串数据被存储到堆,然后把字符串的引用地址存储在字符串变量中。同时为了避免错误操作,js解释器强制约定字符串在堆存储的数据是不可变的。相当于设置字符串在堆区存储的数据是只读的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM