[모던 자바스크립트 Deep Dive] 10~14장 퀴즈

jini.choi·2023년 11월 1일
0
post-thumbnail

📝 문제

10장 객체 리터럴

Q. 1~5번 중 undefined가 출력되는 것은?

var person = {
  name: 'jini',
  age: 12
};

person.adress = 'seoul';

delete person.age;

console.log(person.name);    // 1️⃣

console.log(person['name']); // 2️⃣

console.log(person.adress); // 3️⃣

console.log(person[name]); // 4️⃣

console.log(person.age); // 5️⃣

11장 원시 값과 객체의 비교

Q. 아래 코드에서 console.log의 출력 결과는?

var person = {
  name: {
    first: 'jini',
    last: 'choi'
  },
  age: 12
};

var copy = person;

copy.age = 21;

console.log(person.age); // ?

12장 함수

Q. 아래 코드에서 console.log의 출력 결과는?

console.log(add(2, 5)); // 1️⃣
console.log(minus(10, 5)); // 2️⃣

function add(x, y) {
  return x + y;
};

const minus = function foo(x, y) {
  return x + y;
};

13장 스코프

Q. ()안에 들어갈 말은?

스코프는 "(ㅤㅤㅤㅤㅤㅤㅤ)"이라고 표현하는 것이 적절하다.

14장 전역변수의 문제점

Q. ()안에 들어갈 말은?

변수의 생명 주기는 메모리 공간이 (ㅤㅤㅤ)된 시점부터 메모리 공간이 (ㅤㅤㅤ)되어 가용 메모리 풀(memory pool)에 (ㅤㅤㅤ)되는 시점까지다.


💡 답

10장 객체 리터럴

A. 4️⃣,5️⃣

  • 4️⃣는 []표기법은 따옴표 지정(책에서는 에러로 나오는데 테스트시 undefined 출력됨)
  • 5️⃣는 위에서 프로퍼티 삭제했기 때문에 없음

11장 원시 값과 객체의 비교

A. 21

  • 객체의 경우 여러개의 식별자가 하나의 객체를 공유할 수 있기 때문에 어느 한쪽에서 객체를 변경하면 서로 영향을 주고 받는 부작용이 발생한다.

12장 함수

A. 1️⃣ : 7, 2️⃣ : ReferenceError: minus is not defined

  • 1️⃣은 함수 선언문으로 정의된 함수로 코드가 한줄 씩 순차적으로 실행되기 시작하는 런타임에는 이미 함수 객체가 생성되어 있고 함수 이름과 동일한 식별자에 할당까지 완료된 상태이기 때문에 함수 선언문 이전에 함수를 참조할 수 있으며 호출할 수도 있다. -> 함수 호이스팅

  • 2️⃣는 함수 표현식으로 정의한 함수로 변수에 할당되는 값이 함수 리터럴인 문이다. 변수 선언문과 변수 할당문을 한번에 기술한 축약 표현과 동일하게 동작하기 때문에 함수 호이스팅이 아닌 변수 호이스팅이 발생한다.

13장 스코프

A. "식별자를 검색하는 규칙"

  • 스코프 체인에의한 변수 검색이든 함수 검색이든 모두 식별자에 할당되기 때문에 "식별자를 검색하는 규칙"이라고 표현하는 것이 적절하다.

14장 전역변수의 문제점

A. 확보, 해제, 반환

  • 변수의 생명 주기는 메모리 공간이 확보(allocate)된 시점부터 메모리 공간이 해제(release)되어 가용 메모리 풀(memory pool)에 반환되는 시점까지다.즉, 누군가가 메모리 공간을 참조하고 있으면 해제되지 않고 확보된 상태로 남아있게 된다.
profile
개발짜🏃‍♀️

0개의 댓글