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 的执行要求的主要内容,如果未能解决你的问题,请参考以下文章