我可以在函数声明中传递变量吗?

时间:2013-10-08 22:15:02

标签: javascript serverside-javascript

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

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

例如,successFunctionsomeOtherFunction内部调用时是否会正常工作,因为它是在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更容易的替代方案?

1 个答案:

答案 0 :(得分:1)

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

请参阅:How do JavaScript closures work?