我是Javascript的新手,我正在分析以下代码。我的问题是:对于setTimeout()函数,它是如何被调用的?在我看来它只是被分配给变量this.timer,并且尚未被调用。但该功能仍然执行。我错过了什么/不理解?非常感谢你的帮助!
$(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;
}
});
});
答案 0 :(得分:1)
如何被召唤?
函数名称(setTimeout
)后跟一个(
字符,然后是一些参数,然后是)
字符。
这些参数中的第一个是一个跨多行分割的函数表达式。
在我看来它只是被分配给变量this.timer
正在分配其返回值(可与clearTimeout
一起使用的标识符),而不是setTimeout
函数本身。
答案 1 :(得分:1)
在指定的延迟后执行代码段或函数。
setTimeout
在miliseconds参数(第二个参数)之后触发给定的函数参数(第一个参数)。
返回值为:
timeoutID是超时的数字ID,稍后可以使用window.clearTimeout。
答案 2 :(得分:1)
此处调用该函数:
this.timer = setTimeout(function() {...});
setTimout()
在延迟后执行匿名函数,同时返回其数字ID。 this.timer
然后存储该ID,稍后可以使用clearTimeout
。