SeSac (2021-08 ~ 2021-12)/JS

스프레드 연산자 / Distructuring Assignment

배워도끝이없네 2021. 10. 26. 21:11

Symbol은 primitive type이라 new로 만들면 안된다.

앞에가 대문자인 이유는 나중에 추가되어서 레거시에 symbol키워드를 많이 쓸까봐.

 

ES는 그 해거를 전년에 미리 발표한다 (그래야 각 브라우저들이 대처해서 만들수 있으니까)

Symbol은 유니크한 값을 나타낸다.

 

심볼의 역할은 enum과 iterable 두가지를 가지고있다.

 

enum은 값은 의미없고 구분만 필요할때 사용한다.

 

ECMA에서는 Global Symbol Registry를 사용하도록 권장하고있다.

 

Symbol.for('A')  이렇게 쓰면 레지스트리에 A라는 값으로 등록이 된다.

 

이터레이터는 Symbol.iterator로 만들엇다. (중요)

 

obj = {

[Symbol.iterator](){

   return {next(){

        return {value: "",  done:curIdx++ > arr.length}

        }}

    }

}

 

for of for in은 내부에서 iterator를 이용해서 구현해둔것이다.

 

심볼이랑 이터레이터가 갖는 의미는 스프레드 연산자와 디스트럭쳐링이다.

 

...은 이터러블의 done이 true가 될때까지 불러라 라는의미이다.

 

const arr = [1,2,3];

const [a,b] = arr;

이라면 a는 1 b는 2이다.

 

const [a,...b] = arr;

이라면 a는 1 b는 [2,3] 이다.

 

arr.slice() 는 [...arr]과 의미가 같다.

 

const {name:nm} = u;   // name키값을 nm변수로 받는다.

 

디스트럭쳐링과 스프레드는 기존의 객체를 조작하지 않기위해서 많이 사용한다.

 

 

'SeSac (2021-08 ~ 2021-12) > JS' 카테고리의 다른 글

deep dive 브라우저의 랜더링 과정  (0) 2021.10.30
deep dive Set & Map  (0) 2021.10.28
deep dive Array / Number /  (0) 2021.10.23
deep dive Array  (0) 2021.10.21
deep dive closure / class  (0) 2021.10.19