Skip to content
On this page

2022-10-20

Title
2022-10-20
Category
2022
Tags
Aliases
2022-10-20
Created
last year
Updated
9 months ago

TODO

Learning

js
function temp() {
	for (let i = 0; i < 100000000; i++) {
		const j = i * 2;
	}
}

console.time('temp');
temp();
console.timeEnd('temp');
function temp() {
	for (let i = 0; i < 100000000; i++) {
		const j = i * 2;
	}
}

console.time('temp');
temp();
console.timeEnd('temp');
  • 점점 빨라짐

클로저는 반환된 내부함수가 자신이 선언되었을 때의 환경인 스코프를 기억하여 자신이 선언되었을 때의 환경 곧 스코프 밖에서 호출되어도 그 환경에 접근할 수 있는 함수를 말한다.

클로저는 자신이 생성될 때의 환경을 기억하는 함수다.

부트스트랩(Bootstrap)이란, 일반적으로 한 번 시작되면 알아서 진행되는 일련의 과정을 뜻한다. 컴퓨터 부팅 과정을 부트스트랩이라고 하기도 하는데,

debounce 구현

ver.1

js
export const debounce = (callback: Function, delayTime = 0) => {
	let timeout: NodeJS.Timeout;

	return (...args: any[]) => {
		if (timeout) clearTimeout(timeout); // (1)

		timeout = setTimeout(() => {
			callback(...args);
			clearTimeout(timeout); // (2)
		}, delayTime);
	};
};
export const debounce = (callback: Function, delayTime = 0) => {
	let timeout: NodeJS.Timeout;

	return (...args: any[]) => {
		if (timeout) clearTimeout(timeout); // (1)

		timeout = setTimeout(() => {
			callback(...args);
			clearTimeout(timeout); // (2)
		}, delayTime);
	};
};

clearTimeout 을 하더라도, timeout 변수는 null | undefined 가 아니므로, (1) 은 첫 실행을 제외하고 모두 실행된다.

delayTime이 경과하여 callback이 실행되는 경우, clearTimeout으로 가장 마지막 timeout을 취소한다. 다음 실행에서 (1)로 인해 같은 ID를 두 번 취소하게 된다.

ver.2

js
export const debounce = (callback: Function, delayTime = 0) => {
	let timeout: NodeJS.Timeout;

	return (...args: any[]) => {
		clearTimeout(timeout);
		timeout = setTimeout(() => {
			callback(...args);
		}, delayTime);
	};
};
export const debounce = (callback: Function, delayTime = 0) => {
	let timeout: NodeJS.Timeout;

	return (...args: any[]) => {
		clearTimeout(timeout);
		timeout = setTimeout(() => {
			callback(...args);
		}, delayTime);
	};
};

Released under the MIT License.