# JavaScript Core

async/await, Promise 로 바꾸기
catch 는 앞 모든 것의 에러를 담당한다.이렇게 then 뒤마다 catch 구문으로 에러 처리를 할 수 있다.async/await 일 때도 try/catch 구문을 나눠서 각각 에러를 처리할 수 있다.아래 async 함수를 Promise 로 바꿔보자!await 이

Promise 에도 동기 부분이 있다
Promise 는 실행은 바로 하되, 결괏값을 나중에 원할 때 쓸 수 있는 것제일 먼저딴짓5res 5이렇게 출력된다.new Promise() 의 콜백은 동기이다.catch 는 앞 모든 것의 에러를 담당한다.이렇게 then 뒤마다 catch 구문으로 에러 처리를 할 수
비동기는 동시가 아니라 순서의 문제다
비동기를 async/await 으로 동기로 만들었다. => X한번 비동기는 영원히 비동기이다.콜백이라고 무조건 비동기가 아니다.비동기 콜백이 비동기이고동기 콜백은 동기이다.setTimeout 은 비동기 함수이다.backgroud: 운영체제나 JS 엔진 => JS 가 아
프로미스를 쓰는 이유
프로미스 ⇒ 실행은 됐는데 그 결괏값을 나중에 쓸 수 있음!setTimeout 안에 함수를 분리해서 필요할 때 사용할 수 없다.이 코드는 비동기가 아니다콜백 지옥은 보기도 안좋지만 결괏값을 바로 써야 한다.따라서 프로미스를 써서 필요할 때 써보자!Promise.all
this를 알 수 없는 케이스
this 가 window로 추측하면 안된다.this를 포함하고 있는 익명함수가 호출되는 것을 확인할 수가 없기 때문에,addEventListener에서 콜백함수가 어떻게 호출되는지 모르기 때문에this 가 무엇인지는 알 수가 없다.함수는 1급 객체로, 파라미터로 넘겨줄

this
js ⇒ window, globalThis 로 바뀜node ⇒ global, globalThis 로 바뀜스트릭트 모드에서는ES2015 모듈에서는 strict 모드 자동 적용객체에서 this는 당연히 객체를 가리킨다 => X객체에서 this는 항상 자기 객체는 아니다.호
호이스팅, var, 클로저 문제
함수 스코프호이스팅이 일어나서 선언문이 모두 위로 올라가서 해석된다.선언만 되었지 값은 정의 되지 않아서 undefined 상태undefined1이 콘솔에 찍힐 것이다.호이스팅이 된 이후 코드 해석은 이런 식으로 일어난다.const, let도 호이스팅이 되지만 TDZ(
스코프 체인
선언을 먼저 보자(Lexical Scope)c의 부모 ⇒ anonymousa의 부모 ⇒ anonymousb의 부모 ⇒ c의 부모 ⇒ anonymous선언 지도anonymous ⇒ x, c, ac ⇒ y, bb ⇒ za ⇒ xa에서 b 호출 되는지 보자,a에서 호출 불가
JavaScript - 클래스
ES6에서 클래스 문법이 추가됨클래스는 하위로 갈수록 상위 클래스의 속성을 상속하면서 더 구체적인 요건이 추가 또는 변경됨엄밀히 말하면 상속이 아닌 프로토타입 체이닝에 의한 참조static method: 인스턴스에서 직접 접근할 수 없는 메서드(prototype) me
JavaScript - 프로토타입
▶어떤 생성자 함수(Constructor)를 new 연산자와 함께 호출하면 ▶ Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스(instance)가 생성됨 ▶ 이때 instance에는 \_\_proto\_\_ 라는 프로퍼티가 자동으로 부여
JavaScript - 클로저
클로저 : 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상 => 지역변수를 참조하는 내부함수가 외부로 전달된 경우 => outer 함수의 실행 컨텍스트가 종료 될 때
JavaScript - 콜백 함수
콜백 함수 : 다른 코드의 인자로 넘겨주는 함수 예제) setIntervalsetInterval 구조 : setInveral을 실행하면 반복적으로 실행되는 내용 자체를 특정할 수 있는 고유한 ID 값 반환 : 반복 실행되는 중간에 clearInterval(i
JavaScript - this
다른 대부분의 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체 but, 자바스크립트에서의 this는 어디서는 사용 가능 # in JavaScript 자바스크립트에서 this는 구분이 느슨한 함수와 객체(메서드)를 구분하는 거의 유일한 기능 this는 기본적
JavaScript - 실행 컨텍스트
자바스크립트는 어떤 실행 컨텍스트가 활성화되는 시점에 다음과 같은 동작 수행 1) 변수를 위로 끌어올림(호이스팅) 2) 외부 환경 정보를 구성 3) this 값을 설정실행 컨텍스트 : 실행할 코드에 환경 정보들을 모아놓은 객체 1) 동일한 환경에 있는 코드들을
JavaScript - 데이터 타입
기본형 \- 값이 담긴 주솟값을 복제 \- 숫자 / 문자열 / 불리언 / null / undefined / Symbol \- 불변성참조형 \- 값이 담긴 주솟값들로 이루어진 묶음을 자리키는 주소값을 복제 \- 객체(object) / 배열(array) / 함수 /