면접을 보면서 점차 보완할 예정입니다.
객체 기반의 스크립트 언어
동적이고 타입을 명시할 필요가 없다
객체지향,함수형 프로그래밍 모두 지원
싱글스레드 언어->콜스택이 하나
콜스택에서 바로 호출되지 않고 태스크큐를 거치는 경우 (ajax 같은 http request, setTimeout, 이벤트 리스너 동작 등)
- 자바스크립트 코드를 보고 태스크를 콜스택으로 보낸다
- 비동기적으로 처리해야하는 태스크가 들어오면 web api(백그라운드) 부분으로 보내짐
- web api에서 처리된 태스크는 태스크큐로 보내진다
- 이벤트루프가 콜스택이 현재 비어있는지(=실행 중인 태스크가 없는지) 확인하고 태스크큐에 있던 태스크를 콜스택으로 보낸다.
자바스크립트 엔진과 실행환경을 상호 연동해주는 장치
변수나 함수의 선언부만 코드 최상단으로 끌어올리는 것을 말한다.
var대신 let,const 키워드를 사용한다.
함수를 선언할 때 선언식은 사용하지 말고 표현식, 화살표 함수 형태로 할당한다.
함수가 속한 렉시컬 스코프를 기억해서 함수가 렉시컬 스코프 밖에서 실행 되어도 그 스코프에 접근할 수 있도록 하는 것
변수나 함수 호출시 식별자를 사용하는데 그 식별자를 검색하는 일종의 매커니즘을 스코프라 하고,
렉시컬 스코프란 변수,함수,블록 스코프를 어디에 작성했는가에 따라 정해지는 스코프.
클래스형 컴포넌트에서 this 주체가 바뀌는 경우가 발생. 바인딩을 하거나 화살표 함수로 바뀌면 주체가 바뀌는 일을 막을 수 있다.
new를 사용하면 해당 객체로 바인딩됨
call,apply,bind를 사용해서 명시적 바인딩 사용
객체의 메소드로 호출하면 해당 객체에 바인딩됨
strict mode의 경우 undefined로 초기화된다
일반 브라우저면 window 객체에 바인딩됨
이벤트가 발생했을 때 브라우저가 이벤트를 실행시킬 요소를 결정하는 과정을 말한다. 전파 종류에는 버블링, 캡쳐링 2가지가 있다.
이벤트 버블링은 하위 요소에서 상위 요소로 전파되는 것을 의미하고 캡쳐링은 상위 요소에서 하위 요소로 전파된다.
이때 기본 동작 방식은 이벤트 버블링이다.
하위 요소에서 이벤트 핸들러를 지정하지 않아도 상위 요소에 이벤트 핸들러를 달아 하위 요소들을 제어하는 것을 말한다.