JavaScript 면접 질문 정리
-
식별자, 변수, 상수
✔ 변수(variable)는 변할 수 있는 수(데이터)
✔ 식별자는 어떤 데이터를 식별하는 데 사용하는 이름 변수명
✔ 상수(constant)는 바꿀 수 없는 데이터
✔ 변수와 상수는 할당이 이루어진 공간에 다른 데이터를 재할당할 수 있는지 여부로 구분 -
undefined와 null
✔ undefined : 값을 대입하지 않은 변수, 객체 내부의 존재하지 않는 속성에 접근하려고 할 때, void 함수의 실행 결과
(let, const는 undefined 할당 없이 초기화가 되므로 값 할당 전에는 접근 불가)
✔ null : 비어 있음을 나타내는 값null == undefined // true null === undefined // false
-
실행 컨텍스트
✔ 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 -
호이스팅
💥 식별자들을 최상단으로 끌어올려서 변수 정보를 수집하는 것
function hoisting() {
var a = 1; // 변수 생성
console.log(a); // 1
var a; // 이미 선언된 a가 있으므로 무시
console.log(a); // 1
var a = 3; // 값만 할당
console.log(a); // 3
}
💥 변수는 선언부만 끌어올리고 함수는 전체를 끌어올림
- 함수 선언문과 함수 표현식
✔ 함수 선언문 : function 정의부만 존재하고 별도의 할당이 없는 것
function fx() {...}
✔ 함수 표현식 : 정의한 function을 별도의 변수에 할당하는 것으로 별도의 함수명이 없어도 됨
var fx = function() {...}
-
스코프
💥 식별자에 대한 유효 범위
💥 스코프 체인 : 식별자의 유효 범위를 안에서부터 바깥으로 차례로 검색해 나가는 것
💥 여러 스코프에서 동일한 식별자를 선언한 경우에는 스코프 체인 상에서 가장 먼저 발견된 식별자에 접근 -
함수와 메서드 (독립성 차이)
✔ 함수 : 자체로 독립적인 기능을 수행
✔ 메서드 : 자신을 호출한 대상 객체에 관한 동작을 수행
✔ 함수 이름 앞에 객체가 명시되어 있으면 메서드 아니면 함수 -
this
💥 실행 컨텍스트가 생성될 때 함께 결정됨
💥 메서드일 경우 호출한 주체에 대한 정보
💥 함수일 경우 this가 지정되지 않음(전역 객체 가리킴)
💥 화살표 함수에서는 this를 바인딩하지 않음
💥 콜백 함수에서는 제어권을 가지는 함수(메서드)가 콜백 함수에서의 this를 무엇으로 할지를 결정 -
명시적 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[, ...]])
- 클로저(closure)
💥 어떤 함수에서 선언한 변수를 참조하는 내부함수에서 발생하는 현상
💥 어떤 함수에서 선언한 변수를 참조하는 내부함수를 외부로 전달할 경우 외부 함수의 실행 컨텍스트가 종료된 이후에도 변수가 사라지지 않는 현상
💥 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출할 수 있는 함수
Author And Source
이 문제에 관하여(JavaScript 면접 질문 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gschoi1224/자바스크립트-면접-질문-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)