能够在定义函数表达式之前使用它

Able to use function expression before it is defined

本文关键字:表达式 定义 函数      更新时间:2023-09-26

根据提升函数表达式在定义之前不能调用。我创建了一个模块,试图在定义IIFE之前访问IIFE函数。根据我的理解,它应该给出一个错误,说cookieManager.setPerstistentCookie不是一个函数,但它运行良好。为什么?

$(function(){
        var selectedContainerClassName = $('.mtaa-iml-dropdwn-options li.mtaa-iml-selected').data('parent');
        cookieManager.setPersistentCookie(cookieManager.getCookieNameByComponent('imlookingTo') , selectedContainerClassName );
});
  var cookieManager  = (function(){
        var cookieEnum = {
            imlookingTo : "selectedUIContainer"
        }
        function getPerstistentCookieExpiryTime(){
            var expiration_date = new Date();
            expiration_date.setFullYear(expiration_date.getFullYear() + 1);
            return expiration_date.toGMTString();
        }
        var setPersistentCookie = function(cname, cvalue) {
            var expires = "expires="+ getPerstistentCookieExpiryTime();
            document.cookie = cname + "=" + cvalue + "; " + expires;
        }

        return {
            setPersistentCookie : setPersistentCookie,
            getCookieNameByComponent : getCookieNameByComponent
        }
})();

您已经将引用cookieManager的函数封装在jQuery"就绪"处理程序中。在DOM准备好之前,这些代码不会运行,所以到那时对象已经定义好了。换句话说,在它被定义之前,你不会使用它。

对不起,伙计们,糟糕的是,我说得对,吊装不起作用,也不应该像我解释的那样起作用。之所以有一些工作原理,是因为我在$(function(){})代码段上方复制了相同的脚本代码段,但我错误地忘记了删除它。无论如何,谢谢你的帮助。