IT/Font-end

[JavaScript]Set & WeakSet

omaeng 2020. 6. 9. 08:17

이번에는 자료구조에 대해서 학습하겠습니다.

 

처음으로 Set 자료구조이다. 기본적으로 제공하는 데이터 삽입 삭제가 가능하다.

첨부된 캡처를 기준으로 설명하면 자료를 삽입하고 자료에서 .has메소드를 통해서 자료구조 내의 일정한 값이 존재하는지에 대한 여부를 검사할수 있다. 나아가 forEach를 통해 순회하면서 자료에 접근할 수 있고, 삭제 메소드를 통해 자료구조의 데이터를 삭제할 수도 있다.

 

다음으로는 WeakSet에 대해 알아보겠다.

WeackSet은 참조를 가지고 있는 객체만 저장이 가능한 자료구조로 숫자, 문자열, null 값을 자료구조 안에 삽입할 수 없다. 하지만 배열이나 함수 2중배열 같은 경우 WeakSet에 삽입할 수 있다.

 

//weakset
//참조를 가지고 있는 객체만 저장이 가능하다.

let arr = [1,2,3,4];
let ws = new WeakSet();
ws.add(arr);
// ws.add(111);
// ws.add("111");
// ws.add(null);
ws.add(function(){});
let arr2 = [5,6,7,8];
let obj = {arr,arr2};
console.log(ws);

 

주석 처리가 된 부분을 풀어서 실행하게 되면 타입 에러가 난다. 즉, 참조되지 않은 객체가 아닌 데이터를 삽입하는 것이 금지되어 있는 함수이기 때문에 에러가 발생한다.

또한, 삽입하고 라이프사이클상 재정의된 경우 참조되지 않은 값으로 객체가 변하게 되면 가비지컬렉션에 의해서 삭제된다.