JavaScript中字符串和数组的内存分配

时间:2016-06-30 12:58:10

标签: javascript arrays string debugging memory

第一个功能:

  1. 将字符串和整数连接成一个字符串。
  2. 将结果字符串插入数组。
  3. 将所有数组的字符串连接成一个字符串。
  4. 第二个函数执行相同的操作,但它不是连接,而是在数组中插入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('');
    }
    

1 个答案:

答案 0 :(得分:0)

内循环中的

joinLetters只需一次推送,joinLetters2代替两个push

因此,您将在第一个案例中arr.length = 10000,而在第二个arr.length = 20000中。

当然,你可以期待第二个函数比第一个函数更昂贵。