在JavaScript中,为什么在循环中创建函数的具体原因可能是计算上的浪费?

JavaScript中,为什么在循环中创建函数的具体原因可能是计算上的浪费?

在道格拉斯克罗克福德的JavaScript第39页上,“避免在循环中创建函数.它可能在计算上浪费”.我似乎无法弄清楚为什么在循环中创建函数会比外部更浪费.

解决方法:

因为您正在创建多个Function对象而不是仅重用一个.

创建相同功能的示例…

for (var i = 0; i < 10; i++) {
    // v--creating identical function in each iteration.
    (function(j) {
        var el = document.createElement('a');
        el.onclick = function() { alert(j); };
        document.body.appendChild(el);
    })(i);
}

重用命名函数的示例…

for (var i = 0; i < 10; i++) {
    var el = document.createElement('a');
      // ----------v---calling a reusable function
    el.onclick = createHandler(i);
    document.body.appendChild(el);
}

function createHandler(j) {
    return function() { alert(j); };
}

这两个示例具有相同的结果,但第二个示例不需要在循环期间生成两个函数的开销.相反,它只创建一个处理程序.

上一篇:RxJava Observable最短执行时间


下一篇:2021年Android工作或许更难找,GitHub标星3.2K