8. 如果你需要把多个字符串连接起来,最好是把他们做成一个数组,然后调用join()方法实现这个操作。这种方式在生成HTML片段时尤其 有效。
验证还是用测试代码:
01 |
function testNoJoin(){ |
02 |
var startTime = new Date(); |
03 |
var testStr = "abcdefghqwertyuiolkjmzxv" ; |
04 |
var result = "" ; |
05 |
for (var i=0; i<50000; i++) result += testStr; |
06 |
document.getElementById( 'divShowTime1' ).innerHTML = '耗时1:' + ( new Date() - startTime) + 'ms' ; |
07 |
} |
08 |
function testJoin(){ |
09 |
var startTime = new Date(); |
10 |
var testStr = "abcdefghqwertyuiolkjmzxv" ; |
11 |
var result = "" ; |
12 |
var strs = new Array(); |
13 |
for (var i=0; i<50000; i++) strs[i] = testStr; |
14 |
result = strs.join( "" ); |
15 |
document.getElementById( 'divShowTime2' ).innerHTML = '耗时2:' + ( new Date() - startTime) + 'ms' ; |
16 |
strs = null ; |
17 |
} |
测试结果:
IE8 | Firefox | Chrome | |
1 |
耗时1:19ms |
耗时1:25ms |
耗时1:15ms |
2 |
耗时1:28ms |
耗时1:24ms |
耗时1:16ms |
3 |
耗时1:17ms |
耗时1:25ms |
耗时1:4ms |
4 |
耗时1:16ms |
耗时1:28ms |
耗时1:4ms |
可以看出,这条规则在主流的浏览器中,效率的差别不大。IE6下测试,的确第一种比第二种方式效率差很多,所以这条规则已经过时了。