1

在 Objective C 中使用块时,可以使用在定义块的函数内部可以访问的所有变量。

这同样适用于定义为变量的 JavaScript 函数吗?

例如successFunction,当从内部调用时,它是否会正常工作someOtherFunction,因为它是在内部声明的beforeSaveFunction

var beforeSaveFunction = function(request, response) {

    var successFunction = function(code) {
        request.object.set("sessionAuthCode",code);
        response.success();
    }

    someOtherFunction(successFunction);
}

还是我必须这样做并传递里面的变量someOtherFunction

var beforeSaveFunction = function(request, response) {

    var successFunction = function(code, request, response) {
        request.object.set("sessionAuthCode",code);
        response.success();
    }

    someOtherFunction(successFunction, request, response);
}

如果选项 1 不起作用,是否有比选项 2 更简单的替代方案?

4

1 回答 1

1

是的,这就是 JavaScript 闭包的工作方式。只要变量在定义函数的范围内,它在被调用时就在函数的范围内。

请参阅:JavaScript 闭包如何工作?

于 2013-10-08T22:18:37.547 回答