根据提升函数,在定义表达式之前不能调用它们。我创建了一个模块,我试图在定义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
}
})();
答案 0 :(得分:2)
你已经在jQuery" ready"中包含了引用cookieManager
的函数。处理程序。该代码不会运行直到DOM准备好,所以到那时为止定义了对象。换句话说,在它定义之前你还没有使用它。
答案 1 :(得分:0)
对不起家伙我的坏我正确的提升它是不正常的,它不应该像我解释的那样工作。
之所以有些工作是因为我在$(function(){})
片段上方复制了相同的脚本片段,我忘了将其删除。
任何方式都感谢你的帮助。