Javascript 的执行要求

Posted

技术标签:

【中文标题】Javascript 的执行要求【英文标题】:Execution Requirements for Javascript 【发布时间】:2012-06-10 08:55:46 【问题描述】:

我是 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"        /> 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;

);
);

【问题讨论】:

【参考方案1】:

怎么称呼?

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

这些参数中的第一个是一个函数表达式,它被分成多行。

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

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

【讨论】:

哦,好的。因此,为了跟进这一点,如果我要编写一行代码,例如:var a = function() ,a() 是执行还是简单地定义?非常感谢您的帮助! 如果你只是将一个函数表达式分配给一个变量,而不做其他任何事情,那么它就不会执行。【参考方案2】:

在指定延迟后执行代码 sn-p 或函数。

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

返回值为:

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

Make sure to real all the MDN page

【讨论】:

【参考方案3】:

函数在这里被调用:

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

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

【讨论】:

以上是关于Javascript 的执行要求的主要内容,如果未能解决你的问题,请参考以下文章

javascrip

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

JavaScrip和Java一样吗?

JavaScrip入门