본문 바로가기

분류 전체보기

(122)
call by value와 call by reference call by value와 call by reference는 함수에 인자를 전달하는 방식을 말한다 call by value : 변수의 값을 함수에 전달하는 방식이다. 이 방식에서 원본 변수의 값을 복사하여 함수의 매개변수로 전달한다. 함수 내에서 변수를 변경해도 원래 변수의 값에 영향을 주지 않음 function addOne(num) { num += 1; console.log('Inside function:', num); } let myNumber = 5; addOne(myNumber); console.log('Outside function:', myNumber); call by reference : 변수의 참조(포인터, 메모리 주소 값)를 함수에 전달하는 방식이다 이 방식에서는 원본 값의 메모리 주소 ..
클로저 클로저는 프로그래밍 언어에서 일반적으로 함수화 그 함수가 참조하는 외부 변수를 결합한 개념 클로저는 함수가 정의된 시점의 외부 변수에 대한 참조를 유지하고 이를 나중에 호출할 때 사용 가능 함수가 외부 스코프에서 선언된 변수를 계속 참조할 수 있다 클로저를 사용하는 사례 데이터 은닉 : 클로저를 사용하여 함수 외부에서 접근할 수 없는 비공개 변수를 만들 수 있다 이를 통해 변수를 캡슐화하고 외부에서 변경을 제한할 수 있다 function createCounter() { let count = 0; return function() { count += 1; return count; }; } const counter = createCounter(); console.log(counter()); // 1 conso..
async/await async/await는 비동기 프로그래밍을 쉽게 처리하기 위한 기능이다 함수의 실행을 일시 중단하고 비동기 작업이 완료되기를 기다린 후 실행을 재개한다 코드의 가독성을 높이고 동기식 코드처럼 보이게 작성할 수 있다 async function fetchData() { // ... } async 키워드로 비동기 함수를 선언하면 함수가 비동기로 동작한다 async로 선언된 함수를 Promise를 반환한다 async function fetchData() { const response = await fetch(''); const data = await response.json(); return data; } await 키워드는 async로 선언된 함수 내부에서만 사용할 수 있다 await를 사용하면 비동기 작업이..
프로미스(Promise) 프로미스는 콜백지옥을 해결해주는 자바스크립트의 비동기 프로그래밍에서 사용되는 기법이다 프로미스는 콜백처럼 코드의 실행 순서를 제어하고 비동기 결과를 처리하는 방법으로 사용되지만 다른 점이 존재한다 코드 가독성 : 프로미스는 콜백에 비해 코드 가동성이 좋다 then과 catch 메서드를 이용해서 체이닝하고 async/await를 사용해 동기 코드처럼 작성할 수 있어 가독성이 좋다 에러처리 : 프로미스는 에러 처리가 간편하다 콜백에서는 각각 콜백 함수에서 에러를 확인하고 처리해야한다 프로미스는 catch 메서드를 사용해서 한곳에서 에러를 처리할 수 있다 병렬 실행 : 프로미스는 여러 비동기 작업을 병렬로 실행하고 결과를 쉽게 조합할 수 있다 Promise.all 또는 Promise.race와 같은 메서드를 ..
프로세스(Process)와 스레드(Thread) 프로세스와 스레드는 컴퓨터 시스템에서 실행되는 작업의 두 가지 주요 유형이다 정의 프로세스 : 독립적인 실행 프로그램, 자체 메모리 영역과 자원을 갖춘 시스템의 실행 단위 스레드 : 프로세스 내에서 실행되는 경량 실행 단위, 프로세스와 메모리 및 자원을 공유 메모리 공간 프로세스 : 각 프로세스는 독립적인 메모리 공간을 가지며 다른 프로세스와 직접적으로 공유하지 않는다 스레드 : 같은 프로세스 내의 스레드들과 스택을 제외한 코드, 데이터, 힙 메모리 공간을 공유하고 각각의 스레드는 독립적인 스택 영역을 가진다 자원 공유 프로세스 : 프로세스 간 자원 공유는 IPC 메커니즘을 통해 이루어진다 (파이프, 메시지 큐, 소켓) 스레드 : 같은 프로세스 내의 스레드들은 코드, 데이터, 힙, 영역 등을 공유하므로 ..
동기(Synchronous)와 비동기(Asyncronous) 동기(Synchronous)와 비동기(Asyncronous)는 코드 실행 방식을 설명하는 두 가지 주요 개념이다 차이점은 작업이 수행되는 순서와 완료 시점에 있다 동기 코드 실행 작업은 순차적으로 실행되며 한 작업이 완료될 때까지 다음 작업은 대기한다 코드 실행 순서가 명확하며 프로그램의 흐름을 이해하기 쉽다 시간이 오래 걸리는 작업이 있는 경우 그 작업이 완료될 때까지 프로그램이 멈춰있게 되어 천체 성능에 영향을 줄 수 있다 비동기 코드 실행 여러 작업이 동시에 수행되는 방식, 작업이 완료되는 것을 기다리지 않고 다음 작업을 진행 작업이 동시에 실행되어 오래 걸리는 작업이 다른 작업에 영향을 미치지 않는다 전체 성능과 효율성이 향상되며 특히 I/O바운드 작업에서 이점이 크다 코드 실행 순서가 명확하지 ..
node.js 이벤트 루프(event loop) 이벤트 루프(event loop)는 비동기 작업들을 처리하기 위한 JS의 핵심 기능이다 이벤트 루프는 프로그램이 종료될 때까지 계속 실행된다 콜백 큐에 쌓은 작업들을 순차적으로 처리한다 이를 통해 싱글 스레드 환경인 node.js에서 여러 비동기 작업을 동시에 처리할 수 있다 이벤트 루프의 주요 작동 원리 이번트 루프가 콜 스택과 콜백 큐에 있는 작업을 확인한다 큐에 콜백 함수이 있으면 콜백 함수을 가져와 실행한다 작업이 완료되면 해당 작업의 콜백 함수를 호출한다 콜백 큐에 더이상 작업이 없거나 완료된 작업이 없을 때까지 반복한다 해당 블로그의 그림을 보고 학습하면 더 쉽게 학습할 수 있다 JavaScript 비동기 핵심 Event Loop 정리 자바스크립트는 단일 스레드 기반으로 비동기로 동작하나요? ..
node.js 콜백(callback) 콜백은 어떤 작업이 완료된 후 호출되는 함수를 말한다 콜백은 주로 비동기 작업의 결과를 처리하거나, 이벤트 발생 시 실행되는 작업을 정의할 때 사용한다 콜백 함수는 다른 함수의 인자로 전달, 필요한 시점에 실행 node.js에서 I/O 작업, 타이머, 이벤트 리스너 등 다양한 비동기 작업에 콜백을 사용한다 이를 통해 블로킹을 피하고 높은 처리 성능을 유지한다 콜백의 예시 // express.js를 사용할 때 많이 쓴다 router.get('/signup_page', (req, res) => { res.render('signup'); }); 콜백을 사용할 때 주의할 점은 콜백 지옥이다 콜백 지옥은 여러 비동기 작업이 순차적으로 실행되어야 할 때 콜백 함수가 중첩되어 코드의 가독성과 유지 관리성이 매우 떨어..