다음 코드는 온라인에서 발견되었으며 리사이즈 이벤트 리스너와 함께 작동하도록 구현하려고하고 있으며 작동 방식이 복잡하다는 점을 이해하기 위해 고심하고 있습니다. JS/Jquery에 대한 3 개월의 경험이있는 사람이 이해할 수 있다고 말하면서 누군가 기꺼이 부 풀릴 수 있습니까? 내가 뭘 고민하고 있는지에 대한 몇 가지 지침은 (대부분은 그렇지만, 실제로 난처한 부분을 정의 할 것입니다.) "인수"또는 변수 "args"는 정의 된 값이 할당되었습니다. 어떻게 하나의 "즉각적인"디버깅 기능을 전달합니다.디 바운싱 세부 정보
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this,
args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
var debounceHeightSet = debounce(function() {
numHeightset();
}, 250);
"즉치"부울 매개 변수에 대해 설명해 주셔서 감사합니다. 그래서 그것의 기본적인 이해는 나중에 함수 설정 "timeout = null;" "대기"기간 (debounce가 "debounceHeightSet"에 할당되고 setTimeout 코어 메소드로 전달 될 때 설정 됨) 동안 함수 호출이 무시된다는 의미입니다. 반면 부울 매개 변수가 "debounce (function() {...}, true)"로 전달되면 호출이 무시되지 않습니다. "func"가 "context"및 "arg"매개 변수를 사용하여 .apply() 메소드 체인을 가지고있을 때 무슨 일이 일어나는지 정확하게 설명해 주시겠습니까? – user3586963
var callNow = 즉시 &&! 타임 아웃; debounce를 호출 할 때 대기 시간도 추가합니다. 그리고 타이머는 "wait"후에 실행될 코드에 생성됩니다. 그래서 코드는 타이머가 이미 존재하는지 여부를 확인합니다. 타이머가 이미 존재하면 호출은 이제 false가되고 func는 실행되지 않습니다. –
이해를 돕기 위해이 링크를 체크하십시오. "http://stackoverflow.com/questions/1986896/what-is-the-difference-between-call-and-apply" –