我有以下代碼:變量如何在Javascript中工作? setTimeout期間變量值是否可以改變?
function Notification(type)
{
switch (type)
{
case "success":
notificationID="not1";
break;
case "error":
notificationID="not2";
break;
}
setNotificationTimeoutId = setTimeout(function() {
jQuery('#' + notificationID).fadeOut(200, function() {
var notification = document.getElementById(notificationID);
if (notification)
{
jQuery(notification.parentNode).remove();
if (type == "success")
DoSomething();
}
setNotificationTimeoutId = null;
});
}, 5000);
}
我的問題是,如果函數(通知)被調用上的click事件,如果它被調用兩次(第一次用通知(「成功」),然後用通知(「錯誤」))通過兩個單擊事件,是否有可能第二個函數調用更改第一個函數調用的類型變量值?
例如:當第一個調用(成功的一個)在setTimeout內部進入函數時(第二次調用Notification已經用type =「error」進行),它甚至將變量'type'看作「error」雖然這個調用是第一個,它調用類型=「成功」?
不,這是不可能的,應該有另一種伎倆 – haynar 2012-07-18 11:53:55
是的,它是可能的,其實這就是在你的代碼已經在發生了。要改變它,在函數的開頭添加'var notificationID;'。 – davin 2012-07-18 11:55:05