
기본형 / 참조형 데이터는 기본형이거나 참조형이다. 기본형 기본형은 원시값의 주소를 가리킨다. 값을 바꿔도 원시값을 가리키는 주소가 바뀌는 것이지, 같은 주소 안에서 원시값이 바뀌는 것이 아니다. 그래서 주소안의 값은 불변으로 여긴다. a = 1; b = a; a, b 둘다 '1이 담겨있는 주소'를 가리키고 있다. a === b; 둘은 같은 주소이기 때문에 true이다. a = 2; 새로운 주소에 2를 할당하고 a가 그곳의 주소를 가리키게 된다. 이때, 1을 담고있는 공간에는 어떠한 변화도 없다. (즉, 불변하다) 후에 아무도 1을 가리키지 않는다면 각 JS 엔진의 GC가 적당한 시기에 1을 담고있는 공간을 비운다. 참조형 참조형은 데이터가 아니라 그룹의 주소를 가리킨다. 그룹의 주소는 바뀌지 않지만 그..

JS에서의 큐? 자바스크립트의 리스트는 큐의 디큐(dequeue) 역할을 하는 shift() 함수가 존재하기는 합니다만, 시간 복잡도가 O(n)입니다. 사실상 시간적으로는 디큐의 역할을 하지 못하는 것입니다. index를 활용해서 큐의 시작점을 바꿀 수 있지만, 이 또한 공간적으로 디큐의 역할을 하지 못합니다. 그렇다고 연결리스트로 큐를 구현하기에는 너무 코드가 길어지고 코딩 테스트에서 활용하기 어렵습니다. index와 delete 연산으로 해결하기 delete연산은 시간복잡도가 O(1)입니다. 다만 리스트의 길이가 줄어들지 않습니다. const list = [0, 1, 2]; delete list[0]; list // [ , 2, 3 ] list[0] // undefined 그래서 head 역할을 하는..