将变量从外函数传递给内函数
Passing a variable from out function to inner function
在对象文字中,在函数定义中,我调用另一个函数并向其传递函数定义。
...
var myObjLiteral = {
...
, check_on: function(param1, param2) {
ref.otherFunction(param1, function(param2){checkJson(param2)});
}
}
otherFunction将按原样接收param1,但不会按原样接收param2。
为什么?
因为传递给其他函数的第二个参数创建了它自己的闭包,而param2实际上是一个新的引用,它覆盖了check_on定义中param2的外部引用。
我认为这是正确的。但更重要的是,我如何将param2的值传递到函数定义中,作为传递到otherFunction的第二个参数?
感谢
只需删除param2参数(不需要另一个param,只是为了说明问题)
otherFunction(param1, function(anotherParam) {
checkJson(param2);
});
因此该函数将成为param2的闭包。
假设otherFunction是这样的:
otherFunction = function(p1, callback){}
然后回调(123456)将使另一个Param=12346;
这是因为当您在第二个函数中声明param2
时,它会在第二次函数中创建一个具有该名称的新变量。因此关闭被打破。删除param2
的声明或对其进行重命名以使闭包工作。
本教程帮助我更好地理解闭包是如何工作的。
下面是我如何计算出来的,以帮助我向自己说明Andrew的答案。你可能会发现这很有用:
var myObjLiteral = {
check_on: function (param1, param2) {
var _this = this;
this.otherFunction(param1, function () {
_this.checkJson(param2);
});
},
otherFunction: function(param1, callback) {
console.log('otherFunction', param1); // otherFunction 1
callback();
},
checkJson: function (param2) {
console.log('checkJson', param2); // checkJson 2
}
}
myObjLiteral.check_on(1, 2);
相关文章:
- 访问嵌套函数结构中的JavaScript父函数变量
- Javascript函数变量传递语法问题
- JavaScript 函数变量范围问题
- 在 promise 中获取构造函数变量
- 将函数结果传递给Javascript中的另一个函数变量
- 用对象设置函数变量's值
- Javascript函数变量应生成错误,而不是未定义的错误
- 我可以访问用户脚本中的匿名函数变量吗?
- 在实例化期间使用构造函数变量
- 为什么在 JavaScript 中不能用函数变量覆盖字符串变量
- JavaScript 允许调用函数访问调用函数变量
- 如何在嵌套原型中访问 JavaScript 构造函数变量
- 对函数变量的 JavaScript 控制台日志输出感到困惑
- 如何将函数变量传递给主干模型上的 jQuery 事件
- 如何访问构造函数变量
- 实例函数变量不会更改
- 为什么函数变量在变量之后是未定义的
- 用内部函数变量更改外部函数变量?Javascript
- Javascript - 使用闭包递增静态函数变量模拟
- 异步 JavaScript 静态函数变量