Javascript的执行要求

时间:2012-06-10 08:55:47

标签: javascript function execution

我是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;
}
});
});

3 个答案:

答案 0 :(得分:1)

  

如何被召唤?

函数名称(setTimeout)后跟一个(字符,然后是一些参数,然后是)字符。

这些参数中的第一个是一个跨多行分割的函数表达式。

  

在我看来它只是被分配给变量this.timer

正在分配其返回值(可与clearTimeout一起使用的标识符),而不是setTimeout函数本身。

答案 1 :(得分:1)

  

在指定的延迟后执行代码段或函数。

setTimeout在miliseconds参数(第二个参数)之后触发给定的函数参数(第一个参数)。

返回值为:

  

timeoutID是超时的数字ID,稍后可以使用window.clearTimeout。

Make sure to real all the MDN page

答案 2 :(得分:1)

此处调用该函数:

this.timer = setTimeout(function() {...});

setTimout()在延迟后执行匿名函数,同时返回其数字ID。 this.timer然后存储该ID,稍后可以使用clearTimeout