在JavaScript中,我有一个包含许多迭代的循环,并且在每个迭代中,我正在创建一个包含许多+=运算符的巨大字符串。有没有更有效的方式来创建字符串?我正在考虑创建一个动态数组,在该数组中不断向其中添加字符串,然后进行联接。谁能解释并举例说明实现此目标的最快方法?
+=
基于JSPerf的基准测试似乎是使用+=最快的方法,尽管不一定在每个浏览器中都使用。
为了在DOM中构建字符串,最好先将字符串连接起来,然后添加到DOM中,而不是迭代地将其添加到dom中。不过,你应该根据自己的情况进行基准测试。
(感谢@zAlbee进行更正)
查看链接的页面。好像
+=
和在数组上进行联接之间没有什么区别。似乎将每个字符串添加到DOM的
66%
速度(对于IE9)要比创建字符串然后将字符串添加到DOM更快。链接的页面对两个测试都使用+ =,没有.join()可见,因此这是一个毫无意义的测试,仅将噪声显示为任何“差异”。一个很好的示例,说明js可能多么嘈杂... dom比字符串慢,因此请谨慎使用。
时间只是其中的一个组成部分。对于迭代例程,我想知道各种方法之间对GC的影响是什么?
对于大字符串,由于字符串concat的内存错误非常令人讨厌,因此array.join可能更可取。bug.chromium.org/p/v8/issues/detail?id=3175