본문 바로가기

Programming/JavaScript

(5)
디바운스와 스로틀 디바운스 (Debounce)디바운스는 이벤트가 발생한 후 일정 시간 동안 추가적인 이벤트가 발생하지 않을 때만 최종적으로 이벤트 핸들러를 실행하는 기법입니다. 예를 들어, 사용자가 입력을 마칠 때까지 기다렸다가 마지막 입력에서만 API를 호출하는 경우에 유용합니다. 작동 원리이벤트가 발생하면 타이머를 시작합니다.이벤트가 다시 발생하면 타이머를 리셋합니다.타이머가 만료되면 이벤트 핸들러를 실행합니다.예제 코드function debounce(callback, delay) { let timerId; return event => { if(timerId)clearTimeout(timerId); timerId = setTimeout(callback, de..
Web Worker Web Worker는 웹 브라우저에서 제공하는 기능 중 하나로, 메인 스레드와는 별개의 백그라운드 스레드에서 스크립트를 실행할 수 있게 해주는 API입니다. 이를 통해 복잡하고 시간이 많이 소요되는 작업을 메인 스레드와 독립적으로 처리할 수 있으며, 이는 웹 애플리케이션의 응답성과 성능을 향상시킬 수 있습니다. 주요 특징 멀티 스레딩 지원: JavaScript는 전통적으로 싱글 스레드로 작동합니다. Web Worker를 사용하면 별도의 스레드에서 스크립트를 실행할 수 있으며, 이는 복잡한 계산이나 대량의 데이터 처리 작업을 백그라운드에서 수행할 수 있게 해줍니다. 메인 스레드의 비동기 처리 가능: Web Worker를 사용하면 메인 스레드가 UI 업데이트나 사용자 인터랙션 처리에 집중할 수 있습니다. 이..
객체에서의 in 연산자 사용 시 주의사항 객체에서의 in 연산자 사용 in 연산자는 객체의 자체 속성뿐만 아니라, 그 객체가 상속받은 모든 속성을 확인합니다. const person = { name: 'John' }; console.log('name' in person); // true console.log('toString' in person); // true 여기서 person 객체는 name 속성만을 직접 가지고 있지만, toString 메서드는 person 객체의 프로토타입 체인 상에 존재합니다. 따라서 'toString' in person은 true를 반환합니다. 이러한 상황에서 객체의 자체 속성만을 확인하고 싶다면 hasOwnProperty() 메서드를 사용해야 합니다. console.log(person.hasOwnProperty('..
JS 비동기 프로그래밍 JavaScript는 싱글 스레드 언어로, 일반적으로 한 번에 하나의 작업만 처리할 수 있습니다. 시간이 많이 걸리는 작업을 동기적으로 처리하면, 해당 작업이 종료될 때까지 프로그램의 다른 부분이 블로킹(작업 중단)됩니다. 하지만, 비동기 처리를 통해 이러한 블로킹을 방지하고 다른 작업을 병렬적으로 진행할 수 있습니다. JavaScript에서 비동기 처리가 가능한 타이머 함수(setTimeout, setInterval), HTTP 요청, 그리고 이벤트 핸들러 등이 있습니다. 이런 비동기 작업들은 브라우저나 Node.js의 이벤트 루프에 의해 관리되며, 이벤트 루프는 호출 스택이 비어 있을 때 작업 큐(Task Queue) 또는 마이크로태스크 큐(Microtask Queue)에서 작업을 하나씩 꺼내 처리함..
자바스크립트 컴파일러 에러와 런타임 에러 이해하기 현대 자바스크립트에서는 트랜스파일링이나 번들링 도구들을 사용하는 것이 일반적입니다. 이러한 환경에서 컴파일러 에러와 런타임의 에러를 어떻게 구분하고 이해해야 하는지 알아보겠습니다 컴파일러 에러란? 자바스크립트는 전통적인 컴파일 언어와 달리 인터프리터 언어입니다. 이는 코드가 별도의 컴파일 과정을 거치지 않고 실행 시점에 해석된다는 것을 의미합니다. 그러나 현대 웹 개발 환경에서는 트랜스파일링과 번들링 과정이 일반적이며, 이 과정에서 발생하는 에러를 '컴파일러 에러'라고 부르는 것 같습니다. 트랜스파일링 (Transpiling): 트랜스파일링은 주로 고수준 언어에서 다른 고수준 언어로의 소스 코드 변환을 의미합니다. 예를 들어, ES6+ 자바스크립트 코드를 오래된 브라우저에서도 호환되는 ES5 코드로 변환..