javascript - 循环内联与函数内函数?

标签 javascript function parameters operators wrapper

我遇到的情况是,我正在编写共享工作方法的多个函数,并且真的很想重构和整理此代码,而不是让这些相同的 block 出现无数次只是为了执行细微的差异。给定一个信息 block ,我扫描每个条目并对相关 block 执行操作。循环函数的例子如下:

    function basicFunc() {
        var totalX = 2000, totalY = 2000;
        for (var y = 0; y < totalY; y++) {
            for (var x = 0; x < totalX; x++) {
                  /* Fake operation for theory */
                  var fakeVar = (y * x);
            }
        }
    };

比较:

    function eachBlock(whatToDo, totalX, totalY) {
        for (var y = 0; y < totalY; y++) {
            for (var x = 0; x < totalX; x++) {
                 /* Fake operation for theory */
                 return whatToDo;

            }
        }
    };
    function basicFunc() {
        var totalX = 2000, totalY = 2000;
        eachoBlock("var fakeVar = (y * x)", totalX, totalY);
    };

这对于将单行作为 whatToDo 参数传递来说效果很好。假设您有一堆操作要做,而不是一个 var FakeVar 操作,您将如何将多行传递给 eachBlock()

TLDR:如何在函数中使用函数调用来包装其在成为单独函数之前执行的原始代码操作 block ?

最佳答案

在“更快”的示例中,

return whatToDo; 会导致立即跳过两个循环并退出函数。它们没有相同的效果,因此您的基准不适用。

无论如何,如何做到这一点:传递一个函数,调用该函数。 JavaScript 没有很大的区别,这是它最有用的功能之一。

function eachBlock(whatToDo, totalX, totalY) {
    for (var y = 0; y < totalY; y++) {
        for (var x = 0; x < totalX; x++) {
             /* Fake operation for theory */
             whatToDo(y, x);
        }
    }
}

function basicFunc() {
    var totalX = 2000, totalY = 2000;
    eachoBlock(function(y, x) {
        var fakeVar = (y * x);
        …
    }, totalX, totalY);
}

关于javascript - 循环内联与函数内函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21294912/

相关文章:

javascript - 浏览器中出现错误,提示找不到变量?

C++ 使用 "this"作为参数?

python - 如何使用动态名称实现 property()(在 python 中)

php - Zend URL 参数 - 隐藏键和显示值

javascript - 在按类或名称选择复选框事件后调用函数

python - Print only 在函数完成执行后打印

javascript - 没有 float 的 StickyX 元素

java - 通过递归函数进行跟踪

javascript - 无法将样式分配给表中动态创建的列

javascript - Typescript 编译器不检查方法返回类型的有效性