当在下面的代码中声明时,$sessionTimeLeft
在updateSession()
内部访问时未定义。但是当我在initiate()
里面移动$sessionTimeLeft
声明和赋值时,我得到了正确的jQuery对象。我想我可以访问$sessionTimeLeft
当它在initiate()
内由于关闭而被声明。但为什么$sessionTimeLeft
超出我的原始代码范围?模块内部的Javascript范围问题
var session = (function SessionManager() {
var timeLeftInMs;
var timeLeftInMin;
var delay; // in ms
var $sessionTimeLeft = $('#dcSessionTimeLeft');
/* Set up the module by setting the timeout and delay time. */
function initiate(_timeout, _delay) {
timeLeftInMin = _timeout;
timeLeftInMs = timeLeftInMin * 60 * 1000;
delay = _delay; // delay in ms
setInterval(updateSession, delay);
}
function updateSession() {
timeLeftInMs -= delay;
timeLeftInMin = timeLeftInMs/60000; // convert ms to min.
$sessionTimeLeft.text(timeLeftInMin);
}
var publicAPI = {
initiate: initiate
};
return publicAPI;
})();
session.initiate(30,1000);
'session.initiate(30,1000)' –
是'#dcSessionTimeLeft'当你把它分配给$''sessionTimeLeft装? –
请提供代码来重现问题。 –