JavaScript 면접 질문 정리

  1. 식별자, 변수, 상수
    ✔ 변수(variable)는 변할 수 있는 수(데이터)
    ✔ 식별자는 어떤 데이터를 식별하는 데 사용하는 이름 변수명
    ✔ 상수(constant)는 바꿀 수 없는 데이터
    ✔ 변수와 상수는 할당이 이루어진 공간에 다른 데이터를 재할당할 수 있는지 여부로 구분

  2. undefined와 null
    undefined : 값을 대입하지 않은 변수, 객체 내부의 존재하지 않는 속성에 접근하려고 할 때, void 함수의 실행 결과
    (let, const는 undefined 할당 없이 초기화가 되므로 값 할당 전에는 접근 불가)
    null : 비어 있음을 나타내는 값

    null == undefined // true
    null === undefined // false
  3. 실행 컨텍스트
    ✔ 실행할 코드에 제공할 환경 정보들을 모아놓은 객체

  4. 호이스팅
    💥 식별자들을 최상단으로 끌어올려서 변수 정보를 수집하는 것

function hoisting() {
  var a = 1;	// 변수 생성
  console.log(a);	// 1
  var a;	// 이미 선언된 a가 있으므로 무시
  console.log(a);	// 1
  var a = 3;	// 값만 할당
  console.log(a);	// 3
}

💥 변수는 선언부만 끌어올리고 함수는 전체를 끌어올림

  1. 함수 선언문과 함수 표현식
    ✔ 함수 선언문 : function 정의부만 존재하고 별도의 할당이 없는 것
function fx() {...}

✔ 함수 표현식 : 정의한 function을 별도의 변수에 할당하는 것으로 별도의 함수명이 없어도 됨

var fx = function() {...}
  1. 스코프
    💥 식별자에 대한 유효 범위
    💥 스코프 체인 : 식별자의 유효 범위를 안에서부터 바깥으로 차례로 검색해 나가는 것
    💥 여러 스코프에서 동일한 식별자를 선언한 경우에는 스코프 체인 상에서 가장 먼저 발견된 식별자에 접근

  2. 함수와 메서드 (독립성 차이)
    ✔ 함수 : 자체로 독립적인 기능을 수행
    ✔ 메서드 : 자신을 호출한 대상 객체에 관한 동작을 수행
    ✔ 함수 이름 앞에 객체가 명시되어 있으면 메서드 아니면 함수

  3. this
    💥 실행 컨텍스트가 생성될 때 함께 결정됨
    💥 메서드일 경우 호출한 주체에 대한 정보
    💥 함수일 경우 this가 지정되지 않음(전역 객체 가리킴)
    💥 화살표 함수에서는 this를 바인딩하지 않음
    💥 콜백 함수에서는 제어권을 가지는 함수(메서드)가 콜백 함수에서의 this를 무엇으로 할지를 결정

  4. 명시적 this 바인딩 방법
    ✔ call : 첫 번째 인자로 this를 바인딩하고, 이후의 인자들을 매개변수로 사용
    ✔ apply : 첫 번째 인자로 this를 바인딩하고, 매개변수로 사용할 인자들을 배열로 전송
    ✔ bind : call과 비슷하지만 즉시 호출하지 않고 넘겨 받은 this 및 인수들을 바탕으로 새로운 함수를 반환하기만 함

	Function.prototype.call(thisArg[arg1, [arg2[, ...]])
	Function.prototype.apply(thisArg[, argsArray])
	Function.prototype.bind(thisArg[arg1, [arg2[, ...]])
  1. 클로저(closure)
    💥 어떤 함수에서 선언한 변수를 참조하는 내부함수에서 발생하는 현상
    💥 어떤 함수에서 선언한 변수를 참조하는 내부함수를 외부로 전달할 경우 외부 함수의 실행 컨텍스트가 종료된 이후에도 변수가 사라지지 않는 현상
    💥 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출할 수 있는 함수

좋은 웹페이지 즐겨찾기