🔶 JavaScript

  • Type Error는 왜 발생하는가?

: 개발자가 식별자에 들어있는 값을 착각하는 경우에 발생

  • 객체란 무엇인가?

: 주체(Subject)가 인식할 수 있는 모든 것
: 프로그래밍에서의 주체는 개발자, 즉 개발자가 인식하고 생성할 수 있는 모든 것을 의미
: 우리가 실생활에서 사물을 속성의 집합으로 인식하는데, 프로그래밍의 객체 역시 사물을 속성의 집합으로 인식하는 사고 방식을 따온 것
: 결국 객체는 속성의 집합이라고 볼 수 있음

  • 어트리뷰트와 프로퍼티의 차이점은 무엇인가?

: 어트리뷰트는 상태만 나타내기 때문에 정적임
: 프로퍼티는 상태도, 동작도 나타내기 때문에 동적일 수 있음

  • 함수 선언문을 평가할 때 함수 몸체 내부의 문들은 어떻게 처리하는가?

: 함수 평가 과정에서는 굳이 몸체 내부의 문들을 참조하지 않고, 함수 호출 이후에 몸체 내부의 문에 접근하여 실행함
: 함수 평가 과정에서 몸체 내부의 문들을 참조하지 않는 이유는 함수 호출이 이루어지지 않을 수도 있는데, 그런 경우에 굳이 문들을 참조할 필요가 없기 때문

  • 함수 호출문은 왜 제어문인가?

: 제어문은 코드 흐름을 인위적으로 변경하는 문을 의미함, 함수 호출문 역시 일반적인 코드의 흐름에서 벗어나서 함수를 실행하기 때문에 제어문에 해당함

  • 스코프 체인은 왜 단방향인가?

: 양방향으로 식별자를 검색하면 계속 순환하면서 참조하는 현상 발생, 즉 무한 루프에 빠질 수 있음

  • 대부분의 프로그래밍 언어에서 렉시컬 스코프를 사용하는 이유는 무엇인가?

: 동적 스코프는 호출될 때마다 상위 스코프가 변경되므로 정적 스코프를 사용하기가 더 쉽기 때문

  • 렉시컬 스코프는 왜 필요한가?

: 식별자를 결정하기 위해서는 우선 식별자를 검색할 수 있어야 하는데, 이 검색 과정에서 상위 스코프를 참조할 수 있어야 하기 때문에 렉시컬 스코프가 필요함
: 결국은 렉시컬 스코프의 존재 의의가 곧 클로저

  • 함수 객체만 가지는 내부 슬롯은 무엇인가?

: 모든 객체는 기본적으로 [[Prototype]]이라는 내부 슬롯을 가짐, 함수 객체는 여기에 [[Environment]]라는 추가적인 내부 슬롯을 가짐

  • arguments 프로퍼티는 ES3 이후로 폐지되었는데, 여기서의 폐지는 무엇을 의미하는가?

: ES3 이전엔 존재했지만 지금은 사라진 개념이 아님
: 현재도 존재하지만 사용을 권장하지 않는 개념, 존재하는 이유는 하위 호환을 고려하기 위한 목적

  • arguments 객체는 왜 존재하는가?

: 매개변수를 선언하지 못하는 가변 인자 함수 같은 경우, 그 인수를 저장하기 위해 존재

  • 순회와 열거의 차이는 무엇인가?

: 순회는 순서가 중요함, 즉 배열의 요소를 참조할 때 사용하는 방식
: 열거는 순서가 중요하지 않음, 즉 객체의 프로퍼티를 참조할 때 사용하는 방식
: 객체는 열거되기 때문에 프로퍼티의 순서가 바뀌어도 같은 객체임

  • 유사 배열 객체의 조건은 무엇인가?

: 프로퍼티 키가 ‘0, 1, 2, 3’ 등의 순차적인 문자열이어야 함
: length 프로퍼티가 존재해야 함

  • 유사 배열 객체가 일반 배열보다 나은 점은 무엇인가?

: 배열보다 객체가 나은 점은 프로퍼티 값으로 메서드를 자유자재로 만들 수 있다는 점
: 그러나 기본적으로 빌트인된 배열 메서드가 존재하기 때문에, 모던 자바스크립트에서 유사 배열 객체는 사용하지 않음

  • 현재 자바스크립트에서는 유사 배열 객체를 어떻게 대체하는가?

: Rest 파라미터인 ...를 사용하여 애초에 매개변수를 배열로 받아오면 굳이 arguments를 번거롭게 참조하지 않을 수 있음

  • 생성자 함수의 단점은 무엇인가?

: 객체를 생성할 때마다 메서드를 생성하기 때문에 메모리가 낭비됨, 객체 생성 시 비용도 많이 듦

  • 생성자 함수의 단점을 어떻게 해결할 수 있는가?

: 상위 객체인 프로토타입의 상속으로 해결하거나, 외부 함수를 인수로 받아오는 조합으로 해결

  • 함수는 무엇에 의해 동작을 달리 하는가?

: 호출 방식에 따라 일반 함수, 생성자 함수, 메서드로 동작이 달라짐

  • 생성자 함수가 가지는 prototype 프로퍼티의 값은 무엇인가?

: 생성자 함수가 생성할 인스턴스의 프로토타입
: 이 프로토타입에 인스턴스가 공통으로 포함하는 메서드를 옮겨놓고 상속시킬 수 있음

  • 생성자 함수의 prototype 프로퍼티를 이용하여 메서드를 어떻게 상속시킬 수 있는가?

: this 키워드 대신 생성자 함수 이름.prototype에 메서드를 체이닝시켜야 함
: 그러나 체이닝시킨 메서드가 생성자 함수 내부에 존재한다면, 똑같이 인스턴스 생성 시 함수 객체도 생성되기 때문에 메모리가 낭비됨
: 함수 밖으로 메서드를 빼서 사용하되, 즉시 실행 함수로 묶어주면 같은 생성자 함수 로직임을 표현할 수 있음

  • 스코프 체인과 프로토타입 체인의 차이는 무엇인가?

: 스코프 체인은 식별자를 검색하는 규칙, 프로토타입 체인은 프로퍼티를 검색하는 규칙

  • 프로퍼티 키의 이름을 지을 때 식별자 네이밍 규칙을 준수해야 하는가?

: 프로퍼티는 식별자가 아니기 때문에 준수하지 않아도 됨

  • console 객체의 특징은 무엇인가?

: ECMAScript 사양에 명시된 객체, 즉 빌트인 객체가 아니라 호스트 객체
: 그러므로 브라우저 환경과 노드 환경에서의 console.log 출력 결과가 다르게 나타남

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

0개의 댓글