🔶 JavaScript

  • 이터레이션 프로토콜은 무엇인가?

: ES6에 도입된 순회 가능한 자료구조를 만들기 위한 규칙

  • 이터레이션 프로토콜의 종류에는 무엇이 있고, 어떤 특징이 있는가?

: 이터러블 프로토콜은 Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받은 Symbol.iterator를 메서드를 호출하여 이터레이터를 반환하는 것을 의미함
: 이터레이터 프로토콜은 Symbol.iterator가 반환하는 이터레이터 객체에 관한 것, 이터레이터는 next 메서드를 소유하여 호출할 때 이터레이터 리절트 객체를 반환

  • 이터레이터 리절트 객체의 조건은 무엇인가?

: 이터레이터 리절트 객체는 프로퍼티로 value를 필수적으로 가져야 함, done 프로퍼티는 꼭 포함하지 않아도 되는데, 이 경우 무한으로 순회하게 됨

  • 이터러블이란 무엇인가?

: 이터러블 프로토콜을 준수하는 객체

  • 유사 배열 객체는 이터러블인가?

: 이터러블일 수도, 아닐 수도 있음
: 이터러블인 유사 배열 객체에는 arguments, NodeList, HTMLCollection 객체가 있음

  • ES6의 이터레이션 프로토콜은 왜 추가되었는가?

: 기존에는 다양한 자료구조가 각자의 구조를 가지고 있고 그 구조를 바탕으로 순회했음, 그러다 보니 그 자료구조를 바탕으로 for of, 스프레드 문법 등의 데이터 조작을 하려면 자료구조마다 가지고 있는 순회 방식을 모두 지원해야 했기 때문에 이터레이션 프로토콜으로 통일하여 다양한 자료구조에 대응할 수 있도록 한 것

  • 이터러블의 장점인 지연 평가는 무엇인가?

: 기존 배열의 경우 배열을 생성할 때부터 length가 정해져 있기 때문에, 무조건 출력 값을 메모리에 저장해야 한다는 단점이 있는데, 이터러블의 경우 length를 동적으로 결정할 수 있기 때문에 모든 출력 값을 다 메모리에 저장할 필요가 없음

  • 메서드보다 표현식을 사용해야 하는 이유는 무엇인가?

: 메서드를 사용할 때는 메서드를 호출한 객체, 호출할 메서드, 인수로 무엇을 몇 개나 줄지, 인수의 순서는 어떻게 지정할지, 반환 값으로 어떤 값을 반환할 것인지 등의 다양한 정보를 다 알고 있어야 하므로 어려움
: 표현식을 사용하면 메서드보다 사용 전에 알아야 할 정보가 많지 않으므로 사용하기 쉽고 가독성이 좋음, 그 결과 실수의 가능성도 줄어듦

  • 스프레드 문법이란 무엇인가?

: 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만드는 것
: ...를 사용하여 구현할 수 있음

  • ...은 연산자인가?

: 연산자라고 볼 수 없음
: 연산자는 피연산자를 바탕으로 값을 만들어야 하는데 ...의 결과로는 값이 아니라 값들의 목록이 나오기 때문, 이를 따로 [ ]{ }안에 넣어서 자료구조로 만들어야 값들의 목록을 사용할 수 있음, ...의 결과 값은 단독으로 사용할 수 없음

  • 스프레드 문법은 어떤 경우에 사용할 수 있는가?

: ,로 구분한 값의 목록을 사용하는 문맥에서만 사용 가능
: 함수 호출문의 인수 목록, 배열 리터럴의 요소 목록, 객체 리터럴의 프로퍼티 목록에 사용 가능

  • Rest 파라미터와 스프레드 문법의 차이는 무엇인가?

: Rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받기 위해 매개변수 이름 앞에 ...을 붙인 것
: 스프레드 문법은 여러 개의 값이 하나로 뭉쳐 있는 이터러블을 펼쳐서 값들의 목록을 만드는 것
: 즉 Rest 파라미터와 스프레드 문법의 형태는 통일하지만, 수행하는 동작은 완전히 반대인 개념

  • 디스트럭처링 할당은 무엇인가?

: 구조화된 배열과 같은 이터러블, 객체의 구조를 분해하여 1개 이상의 변수에 개별적으로 할당하는 것

  • 디스트럭처링 할당은 어떤 상황에서 유용하게 사용할 수 있는가?

: 이터러블이나 객체에서 필요한 값만 추출하여 변수에 할당하고 싶을 때 유용

  • 배열 디스트럭처링 할당과 객체 디스트럭처링 할당의 차이는 무엇인가?

: 배열 디스트럭처링 할당의 기준은 배열의 인덱스, 즉 변수에 인덱스 순서대로 할당
: 객체 디스트럭처링 할당의 기준은 프로퍼티 키 이름, 즉 동일한 키 이름을 가진 변수에 할당

  • Rest 요소와 Rest 프로퍼티는 무엇인가?

: 배열을 디스트럭처링 할당하는 경우 할당을 위한 변수에 Rest 파라미터와 유사하게 사용할 수 있는 것이 Rest 요소
: 객체를 디스트럭처링 할당하는 경우 할당을 위한 변수에 Rest 파라미터와 유사하게 사용할 수 있는 것이 Rest 프로퍼티

  • Set은 무엇이고, 어떤 경우에 주로 사용하는가?

: 중복되지 않는 유일한 값들의 집합을 표현하는 자료구조
: 배열과 달리 요소 순서에 의미가 없고, 인덱스를 통해 요소에 접근할 수 없음
: 보통 합집합, 차집합, 여집합, 교집합 등 수학적 개념인 집합을 구현할 때 많이 사용
: 특히 배열의 중복된 요소를 제거할 때 자주 사용할 수 있음

  • Map은 무엇이고, 어떤 경우에 주로 사용하는가?

: 키와 값의 쌍으로 이루어진 자료구조
: 객체와 유사하지만 기존 객체와 달리 프로퍼티 키에 문자열, 심볼 값뿐만 아니라 객체를 포함한 모든 값을 할당할 수 있음

profile
𝙸'𝚖 𝚊 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚝𝚛𝚢𝚒𝚗𝚐 𝚝𝚘 𝚜𝚝𝚞𝚍𝚢 𝚊𝚕𝚠𝚊𝚢𝚜. 🤔

0개의 댓글