0

私は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;
}
});
});
4

3 に答える 3

1

どのように呼ばれていますか?

関数名 ( setTimeout) の後に(文字が続き、次にいくつかの引数、さらに文字が続き)ます。

これらの引数の最初は、複数行に分割された関数式です。

変数 this.timer に割り当てられているように見えます

関数自体ではなく、戻り値 ( で使用できる識別子clearTimeout) が割り当てられます。setTimeout

于 2012-06-10T08:57:16.257 に答える
1

指定された遅延の後にコード スニペットまたは関数を実行します。

setTimeout指定された関数パラメーター (最初のパラメーター) をミリ秒パラメーター (2 番目のパラメーター) の後にトリガーします。

戻り値は次のとおりです。

timeoutID はタイムアウトの数値 ID であり、後で window.clearTimeout で使用できます。

すべての MDN ページを実際に確認してください

于 2012-06-10T08:57:58.097 に答える
1

関数はここで呼び出されます。

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

setTimout()遅延後に無名関数を実行し、その間にその数値 ID を返します。this.timer次に、その ID を保存します。これは後で で保存できますclearTimeout

于 2012-06-10T09:00:09.300 に答える