기술면접 대비, 자바스크립트 : 함수
인트로
자바스크립트 함수와 관련하여 기술면접에 나올만한 질문들을 다루어보았다. 도움이 되길 바란다.
질문
-
콜백 함수에 대해 설명해주세요.
JavaScript에서는 함수를 다른 함수의 인자로 사용하거나 어떤 함수에 의해 리턴될 수 있는데, 이런 함수를 콜백 함수라고 합니다.
이벤트 리스너, 고차 함수, Ajax 결과 수신, 타이머 함수, 애니메이션 완료 등 다양한 상황에서 콜백 함수가 사용됩니다.콜백 함수를 사용할 때는
this
의 사용에 주의해야 하며, 비동기 작업을 효과적으로 처리하기 위해 콜백 지옥을 피하는 방법을 알아야 합니다.
-
콜백 지옥을 해결하는 방법을 설명해주세요.
콜백 지옥은 비동기 처리를 위해 콜백 함수를 반복적으로 사용하면서 발생하는, 깊게 중첩된 코드 문제를 말합니다.
콜백 지옥을 해결하는 방법에는
Promise
나Async/Await
사용이 있습니다.Promise
는 비동기 작업의 결과를 나타내는 객체로,.then()
을 통해 함수 실행 순서를 정할 수 있습니다.
Async/Await
는 비동기 작업을 동기적으로 작성할 수 있게 해주며, 가독성과 작성 편의성을 높여줍니다.콜백과
Promise
를 적절히 혼용하면서 사용하는 것도 좋은 방법입니다.
-
생성자에 대해 설명해주세요.
생성자는 인스턴스 초기화 메서드로, 인스턴스 변수를 초기화하고 인스턴스 생성 시 수행해야 할 작업을 정의합니다.
생성자의 이름은 클래스의 이름과 동일해야 하며, 반환 타입을 가지지 않습니다.
클래스 내에 생성자를 명시적으로 정의하지 않으면 컴파일러는 기본 생성자를 자동으로 생성합니다.생성자는 오버로딩이 가능하며, 필요에 따라 직접 생성자를 구현할 수 있습니다.
-
this에 대해 설명해주세요.
this
는 현재 객체의 참조를 나타내는 키워드입니다.JavaScript에서
this
의 값은 함수 호출 방식에 따라 달라집니다.예를 들어, 메서드로서 호출될 때
this
는 메서드를 호출한 객체를 가리키고, 일반 함수로서 호출될 때는 전역 객체(Global Object)를 가리킵니다. 화살표 함수에서this
는 상위 스코프의this
값을 그대로 사용합니다.
-
call, apply, bind에 대해 설명해주세요.
call
,apply
,bind
는 모두 함수의this
값을 지정할 때 사용되는 메서드입니다.call
메서드는 주어진this
값과 개별적으로 제공된 인자들로 함수를 호출합니다.
apply
는call
과 유사하지만, 인자를 배열로 받습니다.
bind
는 함수의this
값을 영구히 바꿀 수 있는 새로운 함수를 반환합니다.이 메서드들은
this
의 컨텍스트를 명시적으로 지정하거나 변경할 때 유용합니다.
-
함수 선언형과 함수 표현식의 차이에 대해 설명해주세요.
함수 선언형은
function
키워드 다음에 함수 이름이 오며, 호이스팅이 적용되어 코드의 어느 위치에서든 호출할 수 있습니다.
반면, 함수 표현식은 변수에 함수를 할당하는 형태로, 함수가 변수에 할당되기 전까지는 호출할 수 없습니다.함수 표현식은 익명 함수 또는 명명된 함수를 사용할 수 있으며, 호이스팅이 적용되지 않습니다.
-
즉시 실행 함수 (IIFE)에 대해 설명해주세요.
즉시 실행 함수(IIFE, Immediately Invoked Function Expression)는 정의되자마자 즉시 실행되는 함수입니다.
IIFE는
(function() { /* 코드 */ })();
형태로 작성되며, 함수를 괄호로 감싸고 함수 끝에()
를 붙여 실행합니다.
IIFE는 변수를 전역 스코프에 추가하지 않으면서 코드를 즉시 실행할 때 유용하며, 모듈 패턴에서도 자주 사용됩니다.