2012-06-10 4 views
0

자바 스크립트를 처음 사용하고 다음 코드를 분석 중입니다. 내 질문은 : 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; 
} 
}); 
}); 

답변

1

는 어떻게 호출되고

?

함수 이름 (setTimeout)는 다음 몇 가지 인자하는 ) 문자이어서, ( 문자 따른다.

첫 번째 인수는 여러 줄에 걸쳐있는 함수 식입니다. 그것은 단지 아닌 setTimeout 함수 자체가 할당되고

반환 값 (clearTimeout에서 사용될 수있는 식별자) this.timer 변수에 할당되는 것처럼

그것은 내 보인다.

+0

오케이. 따라서 다음과 같은 코드 행을 작성하면 var a = function() {}, a()가 실행되거나 간단하게 정의됩니까? 도와 주셔서 정말 감사합니다! – voltair

+0

함수 표현식을 변수에 할당하고 그 외에는 아무 것도하지 않으면 실행되지 않습니다. – Quentin

1

지정된 지연 후 코드 스 니펫이나 함수를 실행합니다.

setTimeout miliseconds 매개 변수 (두 번째 매개 변수) 다음에 주어진 함수 매개 변수 (첫 번째 매개 변수)를 트리거합니다.

반환 값은 다음

timeoutID window.clearTimeout는 나중에 사용될 수있는 제한 시간의 숫자 ID이다.

Make sure to real all the MDN page

1

기능은 여기에 호출됩니다

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

setTimout() 지연 후 익명 함수를 실행하고 그 사이의 숫자 ID를 반환합니다. this.timer은 해당 ID를 저장합니다. ID는 나중에 clearTimeout이 될 수 있습니다.