1. async/await 문법async/await 문법은 Promise 기반 비동기 코드를 동기 코드처럼 작성할 수 있게 해준다.가독성이 크게 좋아져 비동기 코드의 작성과 이해를 쉽게 만든다. 1.1. 기본 문법1) async async 키워드는 함수가 Promise를 반환하도록 만든다. ex)// async 함수 선언const fetchData = async () => { // ... return userData; // 자동으로 Promise로 래핑됨}; async 함수 내에서 반환하는 모든 값은 자동으로 Promise로 감싸진다. 2) awaitawait 키워드는 Promise가 처리될 때까지 함수 실행을 일시 중지한다. ex)async function getUserData(userId) { ..
1. 콜백이란?콜백 함수는 자바스크립트에서 비동기 작업을 처리하는 가장 기본적인 방법이다.콜백은 다른 함수에 인자로 전달되는 함수로, 특정 작업이 완료된 후 실행된다.자바스크립트의 함수가 일급 객체(first-class citizen)이기 때문에 가능한 패턴이다. 콜백 함수의 특징함수를 다른 함수의 인자로 전달한다특정 이벤트가 발생하거나 작업이 완료되면 호출된다실행 순서가 보장되어 함수의 실행 흐름을 제어하는 데 사용된다 1.1. 비동기 작업에서의 콜백 패턴비동기 프로그래밍에서 콜백은 작업이 완료된 후 실행되어야 할 코드를 지정하는 데 사용된다. ex)// 비동기 콜백 예제console.log("요청 시작");setTimeout(function() { console.log("타이머 완료 후 실행");}..
1. 비동기 처리자바스크립트는 태생적으로 싱글 스레드 언어이다.이는 한 번에 하나의 작업만 처리할 수 있다는 의미이다. 그러나 웹 애플리케이션은 다양한 비동기 작업(네트워크 요청, 타이머, 이벤트 처리 등)을 필요로 한다.자바스크립트는 이런 제약 속에서도 비동기 처리를 가능하게 하기 위해 이벤트 루프 기반의 아키텍처를 채택했다.이 아키텍처는 싱글 스레드 환경에서도 Non-Blocking 방식으로 효율적인 비동기 작업을 수행할 수 있게 해준다. 1.1. 동기 vs 비동기동기(Synchronous) 처리코드가 순차적으로 실행된다한 작업이 완료될 때까지 다음 작업은 대기한다코드의 실행 순서가 예측 가능하다ex)console.log("첫 번째 작업");const result = heavyFunction(); ..
1. 프로토타입이란?자바스크립트는 프로토타입 기반 언어로, 클래스 기반 언어와는 다른 방식으로 객체지향 프로그래밍을 구현한다.프로토타입은 자바스크립트 객체가 다른 객체로부터 메서드와 속성을 상속받는 메커니즘이다. 모든 자바스크립트 객체는 프로토타입 객체에 대한 참조인 [[Prototype]]을 가지고 있다.객체의 프로토타입은 Object.getPrototypeOf(obj) 또는 obj.__proto__로 접근할 수 있다.자바스크립트에서 객체의 속성이나 메서드에 접근할 때, 해당 객체에 없으면 프로토타입 체인을 따라 올라가며 검색한다. 1.1. 객체지향 언어와 자바스크립트의 차이전통적인 클래스 기반 언어(Java, C++ 등)에서는 클래스가 객체의 청사진 역할을 한다.반면 자바스크립트는 클래스 개념 없이 ..
1. 변수 선언 방식 변경JavaScript는 ES6(ECMAScript 2015) 이전까지 var 키워드만으로 변수를 선언했다.하지만 var는 다른 언어들의 변수 선언 방식과 차이가 있어 개발자들이 혼란과 불편함을 겪었다. 그리고 ES6에서는 let과 const라는 두 가지 새로운 변수 선언 방식이 도입되었다.이 변화는 단순한 문법 추가가 아닌, 언어의 근본적인 개선이었다. 2. var의 주요 문제점2.1. 함수 스코프var로 선언된 변수는 함수 스코프(function-level scope)를 가진다.블록 스코프가 아닌 함수 스코프는 예상치 못한 동작을 유발할 수 있다. ex)function varExample() { if (true) { var x = 10; } console.log(x)..
1. 기본 문법1) 변수 선언 방식var, let, const변수를 선언할 때 사용되며 각각 스코프와 특성이 다르다. 예를 들어, var는 함수 스코프를 가지지만, let`과 const는 블록 스코프를 가진다. const는 재할당이 불가능하다는 특징이 있다.// C++const int num = 10;// JavaScriptconst num = 10; 2) 함수 선언 및 표현식function 키워드를 사용하여 선언하거나, 화살표 함수(=>)를 이용할 수 있다. 화살표 함수는 간결한 문법과 this 바인딩이 없다는 특징이 있다.// C++auto add = [](int a, int b) { return a + b; };// JavaScriptconst add = (a, b) => a + b; 3) 동적 타..