在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更容易的替代方案?
答案 0 :(得分:1)
是的,这就是JavaScript闭包的工作方式。只要变量位于定义函数的范围内,它就在函数调用范围内。