- 예외와 에러의 차이는 무엇인가?
: 예외는 기대한 대로 코드가 동작하지 않는 것
: 에러는 문법적인 부분을 지키지 않는 경우에 발생하는 것
- 에러 처리는 왜 해야 하는가?
: 개발자가 발생한 오류를 깨닫고 해결하기 위해서, 또한 프로그램을 강제 종료 시키지 않을 수 있음
- 에러는 어디서 처리해야 하는가?
: 에러를 전파시켜서 전역에서 처리해야 동일한 에러 처리 로직을 재사용할 수 있음
- 에러는 어떻게 전파되는가?
: 호출자 방향으로 전파됨, 여기서 호출자는 함수가 호출되기 직전에 콜 스택에 푸시된 실행 컨텍스트
- 비동기 함수의 콜백 함수는 왜 에러 처리를 할 수 없는가?
: 비동기 함수는 호출 시 실행 컨텍스트에서 바로 제거되기 때문에 콜백 함수는 호출자를 가지지 않음, 호출자가 없으면 에러를 전파시킬 수가 없기 때문
: 에러 처리를 할 수 없다는 문제점은await
와try catch
를 사용하여 해결할 수 있음
- 에러 객체는 무엇이고, 어떻게 사용하는가?
: 어떤 에러인지에 따라 에러 생성자 함수를 구분하여 에러 객체를 생성할 수 있음
: 에러 객체는 최대한 구체적인 메시지를 전달할수록 바람직함
- 모듈은 왜 사용하는가?
: 모듈 기능이 제공되지 않으면 애플리케이션을 하나의 파일로 만들어야 하는데, 이는 불가능함
: 모듈을 사용하면 동일한 이름의 변수를 서로 다른 모듈에 각각 선언할 수 있고, 정보 은닉이 가능함
- 모듈을 구분하는 기준에는 무엇이 있는가?
: 기능별로 모듈을 구분할 수도, 화면별로 모듈을 구분할 수도 있음
- 모듈이 없다면 어떤 문제가 발생하는가?
: 파일을 분리해도 하나의 전역 스코프를 공유하기 때문에 변수끼리 서로 충돌하는 현상이 발생함, 이를 즉시 실행 함수로 감싸서 해결할 수는 있지만 보다 근본적인 해결을 위해 ES6부터는 모듈 기능을 제공함
export
와import
는 무엇인가?:
export
는 다른 모듈에서도 특정 식별자를 사용할 수 있게끔 보내주는 명령어
:import
는 다른 모듈에서export
한 식별자를 참조하여 사용할 수 있게끔 하는 명령어
- Babel은 왜 사용하는가?
: 최신 문법을 사용하여 개발하고 싶은데 이를 지원하지 않는 브라우저가 있을 때 사용
: Babel을 사용하면 최신 문법을 ES5 이하의 사양으로 다운그레이드 시키는 트랜스파일링 과정을 수행할 수 있음
: 특히 IE는 ES6 문법을 지원하지 않는 경우가 많아서 필수적으로 사용해야 함
- Babel에서 명시하는 ES6+과 ES.NEXT의 차이는 무엇인가?
: ES6+는 ES6 이상의 문법, ES.NEXT는 현재 제안 단계에 있는 문법
- Webpack은 왜 사용하는가?
: 프론트엔드에서 사용하는 다양한 확장자의 리소스 파일들을 하나로 번들링하기 위해서 아용
- CORS는 무엇인가?
- MVC 패턴은 무엇이고, 프론트엔드에서 MVC 패턴은 어떻게 구현할 수 있는가?