본문 바로가기
코딩테스트/리디야 할리 JS Quiz

JS Quiz 9-12. 함수에 대해 묻는 문제 / 다시 공부예정

by 학습하는 청년 2024. 4. 1.

9. What's the output?

let greeting;
greetign = {}; // Typo!
console.log(greetign);

정답 A // 모르겠다.

JS 인터프리터가 어떻게 동작하는 지를 파악하자.

 

 

 

<해설>

It logs the object, because we just created an empty object on the global object! When we mistyped greeting as greetign, the JS interpreter actually saw this as:
  1. global.greetign = {} in Node.js
  2. window.greetign = {}, frames.greetign = {} and self.greetign in browsers.
  3. self.greetign in web workers.
  4. globalThis.greetign in all environments.
In order to avoid this, we can use "use strict". This makes sure that you have declared a variable before setting it equal to anything.
이것은 object로 기록이 찍힌다. 왜냐하면 빈 객체를 global 객체에 생성했기 때문이다. 우리가 greeign이라는 오타를 작성했을 때, JS interpreter은 다음과 같이 읽었다.


이를 피하기 위해서는, "use strict" 모드를 사용할 수 있다. 이렇게 하면, 변수를 다른 것과 동일하게 설정하기 전에 확인할 수 있다.

10. What's the output?

function bark() {
  console.log('Woof!');
}

bark.animal = 'dog';

정답 A // 함수도 객체인지를 인식하고 있는지를 문는 문제

 

함수도 객체이므로 bark.animal = 'dog';가 프로퍼티가 추가된다. 그러나 console.log(animal); 또는 함수를 호출(bark())를 해도 animal이 출력되지는 않는다.


11. What's the output?

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const member = new Person('Lydia', 'Hallie');
Person.getFullName = function() {
  return `${this.firstName} ${this.lastName}`;
};

console.log(member.getFullName());

정답 A // 함수가 객체인지를 묻는 문제

 

얼떨결에 맞추긴 했지만, 잘 설명하지 못하겠다. ths와 new가 나오면 기죽고 시작한다. 공부가 필요하다.

 


12. What's the output?

function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

const lydia = new Person('Lydia', 'Hallie');
const sarah = Person('Sarah', 'Smith');

console.log(lydia);
console.log(sarah);

정답 A // 객체의 특성을 묻는 문제.

이것도 모르겠다. 오늘은 9-12 전체에 대해 공부할 필요성을 느꼈다.

기록해두었다가 다시 풀어봐야 겠다. 해설도 그때!(이번주 내로)

댓글