Thief of Wealth
article thumbnail

 

.sort() 메서드는 inplace로 동작하기 때문에, 변환된 값이 원래 배열에 그대로 반영된다.

그러므로, 1번, 2번 구문은 true이다.

그런데 3번 구문은 좌항, 우항이 값은 같으나 서로 다른 메모리를 참조하고 있을 것이므로 false이다.

 

 

set은 중복된 값을 제거시킨다. 근데 mySet구문에서 {a:1}와 {a:1}는 다른 주소값을 가지고 있다.

그러므로 set과정에서 원소가 사라지지 않는다.

그것을 다시 array로 spread해주었으므로 답은 1번이다.

 

Object.freeze는 기본적으로 객체의 수정을 막는 역할을 한다.

하지만 depth가 깊은 프로퍼티에 대해서는 적용되지 않는다.

user.age를 수정하려 한다면 에러가 나겠지만

user.pet.name은 depth가 2이상이므로 freeze의 효과가 먹지 않는다.

 

Dog 인스턴스의 speak는 woof 문자열을 반환한다.

근데 Dog.prototype.speak를 새롭게 정의를 해주었다.

근데 prototype은 Dog라는 객체내에서 speak가 존재하지 않을 때, 프로토타입 체이닝을 통해 호출될 것이다.

그러므로, Dog.prototype.speak는 호출될 일이 없다. Dog내에 이미 speak가 있기 때문에!

 

fetch는 window 객체 내에 존재한다.

즉, 브라우저 환경에서 존재하는 메서드이며, node환경에서는 찾을 수 없을 것이다.

 

result 배열의 요소 순서는 Promise.all에 전달되는 프로미스의 순서와 같다. (모두 성공시!)

 

1 + 1*1

2 + 2*2

6 + 6*3

24 + 24*4 = 24 + 96 = 120

 

2번째 항은 notifications가 1이면 's'를 반환할 것이다.

하지만, 1이 아니라면 false 자체가 반환된다.

 

array를 spread했다해도, 그것은 얉은 복사이기 때문에 좀더 깊은 depth의 불변성을 보장해주진 않는다.

map은 Array.prototype.map이다.

이때 this는 ['a','b','c']으로 설정되어 동작하는데 bind를 통해 this를 바꿔주었으므로 1 2 3이 출력되게 된다.

profile on loading

Loading...