我是Javascript新手,我正在分析下面的代碼。我的問題是:對於setTimeout()函數,它是如何被調用的?它看起來像它只是被分配給變量this.timer,而且它還沒有被調用。但是該功能仍然執行。我在想什麼/不理解?非常感謝你的幫助!Javascript的執行要求
$(document).ready(function() {
var validateUsername = $('#validateUsername');
$('#username').keyup(function() {
var t = this;
if (this.value != this.lastValue) {
if (this.timer) clearTimeout(this.timer);
validateUsername.removeClass('error').html('<img src="images/ajax-loader.gif" height="16" width="16" /> checking availability...');
this.timer = setTimeout(function() {
$.ajax({
url: 'ajax-validation.php',
data: 'action=check_username&username=' + t.value,
dataType: 'json',
type: 'post',
success: function (j) {
validateUsername.html(j.msg);
}
});
}, 200);
this.lastValue = this.value;
}
});
});
噢好的。因此,爲了跟上這一點,如果我要寫一行代碼,例如:var a = function(){},a()會執行還是僅僅定義它?非常感謝你的幫助! – voltair
如果您只是將一個函數表達式分配給一個變量,而不做其他任何操作,那麼它將不會執行。 – Quentin