當在下面的代碼中聲明時,$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裝? –
請提供代碼來重現問題。 –