개발 22

[JavaScript] 코어 자바스크립트 - 5. 콜백 함수

1. 콜백 함수에 대해서 설명해 주세요. 콜백함수는 제어권을 넘겨준 함수 제어권을 넘겨받은 코드는 인자로 어떤 값을 넘겨줄 지, 언제 호출할 지, this 등에 대한 제어권을 가짐 2. 일급 객체에 대해서 설명해 주세요. 다른 객체들에 일반적으로 적용할 수 있는 연산을 모두 지원하는 객체 인자로 넘겨주기, 함수의 반환값으로 사용하기, 변수에 대입하기 등이 가능할 때 일급 객체라고 부름 3. 콜백 함수는 어디에 쓰이나요? 비동기 처리가 필요한 경우 4. 콜백 함수의 제어권 위임에 대해서 설명해 주세요. 콜백 함수에게 제어권을 위임받은 코드는 인자로 어떤 값을 넘겨줄 지, 언제 호출할 지, this 등에 대한 제어권을 가짐 Ex. forEach, map 등의 메소드에서 정의된 순서로 인자 값을 넘겨줄 수 있..

개발/JavaScript 2023.03.23

[JavaScript] 코어 자바스크립트 - 4. this

1. 자바스크립트 this는 다른 언어와 어떻게 다른가요? 다른 객체 지향 언어들에서는 클래스의 인스턴스에서만 this를 사용 가능 자바스크립트는 this를 어디서나 사용 가능하며, 객체와 관한 동작을 수행하기만 하면 메소드라고 부르기 때문에 혼란이 있음 2. 일반 함수와 화살표 함수에서 this가 어떻게 동작하나요? 일반 함수는 따로 this를 바인딩하지 않으면 기본적으로 전역객체를 가리킴 es6에서 등장한 화살표 함수는 this를 바인딩하지 않기 때문에 상위의 this를 가리킴 3. this의 명시적 바인딩, 암시적 바인딩 대해서 설명해주세요. 명시적 바인딩은 call, apply, bind 등의 메소드를 사용하는 방법과 스코프 체인을 이용(상위 스코프에서 var self = this 선언)하는 방법..

개발/JavaScript 2023.03.06

[JavaScript] 코어 자바스크립트 - 3. 이벤트 루프

1. 이벤트 루프에 대해 설명해 주세요. (비동기 처리, 자바스크립트 동시성 처리) 자바스크립트는 싱글 스레드 언어이기 때문에 콜 스택이 하나이지만, 동시에 작업을 처리하기 위해 논 블로킹으로 작업을 수행 그렇기 때문에 비동기 처리가 가능 자바스크립트 엔진이 브라우저 위에서 동작할 때, Web API를 사용할 수 있는데 비동기 처리를 위해 Web API 및 콜백 큐, 이벤트 루프를 이용 이를 통해 자바스크립트는 작업을 동시에 수행할 수 있음 2. 콜 스택에 대해서 설명해 주세요. 자바스크립트 엔진을 이루는 것 중 하나 함수가 호출됐을 때 스택으로 쌓이는 후입 선출의 자료구조 형태 자바스크립트 파일의 어느 부분이 현재 실행 중인지 알 수 있음 3. Web API에 대해서 설명해 주세요. (비동기 처리를 위..

개발/JavaScript 2023.03.06

[JavaScript] 코어 자바스크립트 - 2. 실행 컨텍스트

1. 실행 컨텍스트란 무엇인가요? 코드가 실행되는 데에 필요한 환경 정보가 담긴 객체 2. 실행 컨텍스트의 환경에 대해서 설명해 주세요. 실행 컨텍스트는 3가지로 구성 1. VariableEnvironment 2. LexicalEnvironment 3. ThisBinding 3. 실행 컨텍스트의 생명주기에 대해 설명해 주세요. 실행 컨텍스트는 함수가 실행될 때 생성됨 VariableEnvironment에서는 식별자를 수집 VariableEnvironment를 복사해서 LexicalEnvironment가 만들어짐 LexicalEnvironment에서는 식별자의 데이터에 변화가 생기면 실시간으로 반영 코드가 다 실행되고 함수가 종료되면 실행 컨텍스트도 소멸 4. LexicalEnvironment는 무엇인가요..

개발/JavaScript 2023.02.26

[JavaScript] 함수 선언문과 함수 표현식의 차이 (feat: 호이스팅이 뭔데?)

코어 자바스크립트 책의 실행 컨텍스트 파트를 읽다가 함수 선언문과 함수 표현식의 차이를 깨우치게 되었다. 이 책은 내가 개발을 처음 시작하고 얼마 안 되었을 때 처음 읽었고, 작년 말쯤 또 읽고, 이번에 3번째 읽는 것이다. 처음 읽을 때는 한 페이지 읽는 데 한참을 붙들고 있었는데, 그래도 여러번 보니 예전보단 수월하게 읽혀서 그동안 스스로가 성장한 것 같아 뿌듯했다😊 인프런에서 해당 책의 내용을 다룬 정재남님의 강의도 2번 보았다(2회차 진행 중이다). 실행 컨텍스트가 면접 단골 질문인 것도, 자바스크립트의 핵심 개념 중 하나인 것도 알고는 있지만, 내게는 각종 어쩌구 environment 라는 단어가 잔뜩 나오는 어려운 내용으로 각인되어 있었다. 대강의 흐름은 알았지만 말로 설명하기 어려워서 이번엔..

개발/JavaScript 2023.02.25