[英]Why do I have to enclose a Javascript function call in an anonymous function for it to not be called immediately?
[英]Why do I need an anonymous function to enclose when calling public method from click listener
我對范圍和執行流程有一個不錯的感覺,但是我很難理解為什么它不起作用:
var modalWindow = (function() {
// Other code...
modalBtn.addEventListener('click', modalWindow.closeModal);
return {
closeModal: function() {
modalContainer.remove();
}
}
}());
這樣做:
var modalWindow = (function() {
// Other code...
modalBtn.addEventListener('click', function() {
modalWindow.closeModel());
});
return {
closeModal: function() {
modalContainer.remove();
}
}
}());
第一個拋出modalWindow
是未定義的。 我知道我只需要聲明一個命名對象並在其中放置closeModal
,然后對其進行引用即可,並且在偵聽器中不需要匿名函數。 但是我很好奇后者為什么如此工作。
您提供的代碼具有不匹配的(
。
我敢打賭,最終的結果看起來像這樣:
})();
modalWindow
的值是modalWindow
的返回值…,但是直到IIFE 完成執行並實際返回一個值后 ,該值才得到。
在此之前,該值是undefined
因此當您在IIFE完成之前嘗試讀取它時,它會出錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.