[英]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.