簡體   English   中英

從點擊偵聽器調用公共方法時,為什么需要匿名函數來封裝

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM