20230413 JavaScript 면접 스터디

HYEON17·2023년 4월 13일
0

TIL

목록 보기
16/17
post-thumbnail

1. function foo() {}와 var foo = function() {} 사이에서 foo 사용의 차이에 대해 설명하세요.

function foo() {}는 함수 선언
var foo = function() {}은 함수 표현식

주요한 차이점은 함수 선언은 함수바디가 호이스트되지만, 함수 표현식의 바디는 호이스트되지 않습니다(변수와 동일한 호이스팅 동작을 가짐)
함수 표현식을 정의하기 전에 호출하려고 하면 Uncaught TypeError : XXX is not function에러가 발생

함수 선언

foo(); // 'FOOOOO'
function foo() {
  console.log('FOOOOO');
}

함수 표현식

foo(); // Uncaught TypeError: foo는 함수가 아닙니다
var foo = function () {
  console.log('FOOOOO');
};

2. letvarconst를 사용하여 생성된 변수들의 차이점은 무엇인가요?

var

  • 함수 스코프를 가집니다. 함수 내에서 선언된 변수는 함수 내에서만 접근 가능하며, 함수 외부에서는 접근할 수 없습니다.
  • 변수를 중복 선언할 수 있습니다.
  • 호이스팅(hoisting)이 발생합니다. 즉, 변수가 선언되기 전에 사용되어도 에러가 발생하지 않습니다.
  • 전역 변수로 선언하면 어디서든 접근 가능합니다.

let

  • 블록 스코프를 가집니다. 중괄호({})로 둘러싸인 범위 내에서만 접근 가능합니다.
  • 변수를 중복 선언할 수 없습니다.
  • 호이스팅이 발생하지 않습니다.
  • 초기화되지 않은 변수를 사용하려고 하면 ReferenceError가 발생합니다.

const

  • let과 비슷하지만 상수(constant)를 선언할 때 사용됩니다.
  • 블록 스코프를 가집니다.
  • 변수를 중복 선언할 수 없습니다.
  • 호이스팅이 발생하지 않습니다.
  • 변수를 한 번 초기화하면 다시 할당할 수 없습니다.

3. ES6 클래스와 ES5 함수 생성자의 차이점은 무엇인가요?

4. 새 화살표 => 함수 문법에 대한 사용 예시를 들 수 있나요? 이 새로운 문법은 다른 함수와 어떻게 다른가요?

5. 생성자의 메서드에 화살표 문법을 사용하면 어떤 이점이 있나요?

함수 생성시 this의 값이 설정되고 그 이후에는 변경할 수 없다는 것
따라서, 생성자가 새로운 객체를 생성하는데 사용될 때, this는 항상 그 객체를 참조

6. 고차 함수(higher-order function)의 정의는 무엇인가요?

고차 함수는 다른 함수를 매개 변수로 사용하거나, 결과로 함수를 반환하는 함수
고차 함수는 반복적으로 수행되는 어떤 연산을 추상화하기 위한 것

7. 객체나 배열에 대한 디스트럭쳐링 예시를 들 수 있나요?

디스트럭처링(destructuring)은 객체나 배열에서 원하는 값을 추출하여 변수에 할당하는 방법

8. ES6 템플릿 리터럴은 문자열을 생성하는데 많은 유연성을 제공합니다. 이에 대한 예를 들 수 있나요?

ES6 템플릿 리터럴(Template literals)은 문자열을 생성할 때 큰 유연성을 제공

profile
프론트엔드 개발자

0개의 댓글