[英]How to pass in a variable to a .then() callback function from an outer scope?
[英]JavaScript closures and scoping: How to pass an outer scope variable to a callback function which is passed as an argument?
我的代码是这样的:
im.size((function(a, b) {
console.log(b);
console.log(im);
})(im));
对象 im 有一个函数大小,它需要一个回调函数。 它将参数 a 和 b 传递给回调函数。 但是,我需要让对象 im 在回调中可用。 因此,我从外部将它作为参数传递,但是这“覆盖”了传递给回调的参数 a 和 b。
输出是:
undefined [My Object]
如果我做:
im.size(function(a, b) {
console.log(b);
console.log(im);
});
输出是:
17 [My object] // edited: was undefined before
如何传递 im 对象以在回调范围内可用以及获取传递给回调的变量? 一点解释也很好。
编辑:实际上在我的回调示例中可以访问外部范围。 对于异步回调也是如此,为什么可以通过这种方式访问外部作用域?
第二个示例也应该有效,因为 im 在该范围内定义(从第一个示例中推导出来)。
如果在定义函数的范围内可以访问变量,则它也可以在该函数内访问。 你可以做im.size(im);
将im
传递给 size (例如),因此如果您执行im.size(function() {})
,则该函数也可以访问 im 。
对于异步回调也是如此吗?
是的。
为什么可以通过这种方式访问外部作用域?
这就是它的工作原理 - 它在词法范围内,所以它是可访问的。 其他语言要求您明确说明要关闭哪些变量,而 JS 则不需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.