【发布时间】:2016-06-30 12:58:10
【问题描述】:
第一个函数:
- 将字符串和整数连接成一个字符串。
- 将结果字符串插入数组。
- 将所有数组的字符串合并为一个字符串。
第二个函数做同样的事情,但不是串联,而是在数组中插入 2 个字符串。
问题:你如何确定哪个函数会分配更少的内存? 还有一个问题:我们将有多少个字符串用于第一个函数的内存(每次迭代)?例如,对于第一次迭代,我们将只有“a0”或“a0”、“a”和“0”?
function joinLetters() {
var arr = [];
for(var i = 0; i < 10000; i++) {
arr.push('a' + i);
}
return arr.join('');
}
function joinLetters2() {
var arr = [];
for(var i = 0; i < 10000; i++) {
arr.push('a');
arr.push(i.toString());
}
return arr.join('');
}
【问题讨论】:
-
函数不分配内存...执行它们,通常以因执行环境而异的方式。由于 StackOverflow 是永远的,所以这个问题也应该如此,但我们无法预测未来,例如推断第一个函数使用更少的内存是否仍然有效。
-
如果您觉得我的回答有用,请您接受/投票吗?
标签: javascript arrays string debugging memory