Thumbnail
기술면접Javascript함수

기술면접 대비, 자바스크립트 : 함수

인트로


자바스크립트 함수와 관련하여 기술면접에 나올만한 질문들을 다루어보았다. 도움이 되길 바란다.


질문


  • 콜백 함수에 대해 설명해주세요.

    JavaScript에서는 함수를 다른 함수의 인자로 사용하거나 어떤 함수에 의해 리턴될 수 있는데, 이런 함수를 콜백 함수라고 합니다.
    이벤트 리스너, 고차 함수, Ajax 결과 수신, 타이머 함수, 애니메이션 완료 등 다양한 상황에서 콜백 함수가 사용됩니다.

    콜백 함수를 사용할 때는 this의 사용에 주의해야 하며, 비동기 작업을 효과적으로 처리하기 위해 콜백 지옥을 피하는 방법을 알아야 합니다.



  • 콜백 지옥을 해결하는 방법을 설명해주세요.

    콜백 지옥은 비동기 처리를 위해 콜백 함수를 반복적으로 사용하면서 발생하는, 깊게 중첩된 코드 문제를 말합니다.

    콜백 지옥을 해결하는 방법에는 Promise나 Async/Await사용이 있습니다.

    Promise는 비동기 작업의 결과를 나타내는 객체로, .then()을 통해 함수 실행 순서를 정할 수 있습니다. 
    Async/Await는 비동기 작업을 동기적으로 작성할 수 있게 해주며, 가독성과 작성 편의성을 높여줍니다.

    콜백과 Promise를 적절히 혼용하면서 사용하는 것도 좋은 방법입니다.



  • 생성자에 대해 설명해주세요.

    생성자는 인스턴스 초기화 메서드로, 인스턴스 변수를 초기화하고 인스턴스 생성 시 수행해야 할 작업을 정의합니다.

    생성자의 이름은 클래스의 이름과 동일해야 하며, 반환 타입을 가지지 않습니다.
    클래스 내에 생성자를 명시적으로 정의하지 않으면 컴파일러는 기본 생성자를 자동으로 생성합니다.

    생성자는 오버로딩이 가능하며, 필요에 따라 직접 생성자를 구현할 수 있습니다.



  • this에 대해 설명해주세요.

    this는 현재 객체의 참조를 나타내는 키워드입니다.

    JavaScript에서 this의 값은 함수 호출 방식에 따라 달라집니다.

    예를 들어, 메서드로서 호출될 때 this는 메서드를 호출한 객체를 가리키고, 일반 함수로서 호출될 때는 전역 객체(Global Object)를 가리킵니다. 화살표 함수에서 this는 상위 스코프의 this 값을 그대로 사용합니다.



  • call, apply, bind에 대해 설명해주세요.

    callapplybind는 모두 함수의 this 값을 지정할 때 사용되는 메서드입니다. 

    call 메서드는 주어진 this 값과 개별적으로 제공된 인자들로 함수를 호출합니다.
    apply는 call과 유사하지만, 인자를 배열로 받습니다.
    bind는 함수의 this 값을 영구히 바꿀 수 있는 새로운 함수를 반환합니다.

    이 메서드들은 this의 컨텍스트를 명시적으로 지정하거나 변경할 때 유용합니다.



  • 함수 선언형과 함수 표현식의 차이에 대해 설명해주세요.

    함수 선언형은 function 키워드 다음에 함수 이름이 오며, 호이스팅이 적용되어 코드의 어느 위치에서든 호출할 수 있습니다.
    반면, 함수 표현식은 변수에 함수를 할당하는 형태로, 함수가 변수에 할당되기 전까지는 호출할 수 없습니다.

    함수 표현식은 익명 함수 또는 명명된 함수를 사용할 수 있으며, 호이스팅이 적용되지 않습니다.



  • 즉시 실행 함수 (IIFE)에 대해 설명해주세요.

    즉시 실행 함수(IIFE, Immediately Invoked Function Expression)는 정의되자마자 즉시 실행되는 함수입니다.

    IIFE는 (function() { /* 코드 */ })(); 형태로 작성되며, 함수를 괄호로 감싸고 함수 끝에 ()를 붙여 실행합니다.
    IIFE는 변수를 전역 스코프에 추가하지 않으면서 코드를 즉시 실행할 때 유용하며, 모듈 패턴에서도 자주 사용됩니다.