내용이 쉽지 않아 자바스크립트를 조금 더 공부하고 읽으면 도움이 많이 될 것 같은 책. 이번에는 새로 배운 개념만 간단히 정리하고, 코딩을 하며 이해가 가지 않는 부분이 있을 때 다시 펼쳐봐야겠다.
기본형은 주솟값을 바로 복제, 참조형은 주솟값들의 묶음을 가리키는 주솟값을 복제한다는 점에서 차이가 있다.
모든 데이터는 메모리 주솟값을 통해 서로 구분하고 연결한다.
변수는 변할 수 있는 데이터이며 식별자는 변수명이다.
변수를 선언하고 데이터를 할당할 때, 데이터를 저장하기 위한 별도의 메모리 공간에 저장하고, 그 주소를 변수영역에 저장한다. 이처럼 변수와 데이터를 별도의 공간에 저장하는 것은 데이터 변환을 자유롭게 하게 하고 메모리를 효율적으로 관리하기 위함이다. 이렇게 되면 중복된 데이터에 대한 처리 효율이 높아진다.
변수 복사 이후 객체의 프로퍼티를 변경했을 때 기본형은 값이 달라지고 참조형은 값이 달라지지 않는다. 참조형 데이터는 수정된 값이 객체의 변수영역에 담겨있기 때문이다. 엄밀히 말하면 모든 데이터 타입은 참조형 데이터일 수 밖에 없다. 기본형도 주솟값을 복사하는 과정이 한 번 이루어지기 때문이다. 참조형 데이터도 객체의 프로퍼티가 아닌 새로운 객체를 할당하면 값이 달라진다.
데이터 자체를 변경하고자 하면 기본형과 참조형 모두 기존 데이터는 변하지 않는다. 원본 객체가 변하지 않아야 하는 경우 불변 객체가 필요하다.
참조형 데이터를 가변값으로 여겨야 하는 경우 깊은 복사를 하거나 해당 기능을 제공하는 라이브러리를 사용하면 된다.
undefined와 null은 모두 없음을 나타내지만, 의미와 사용하는 목적이 다르다.
혼란을 막기 위해 명시적으로 undefined를 대입하는 것을 지양해야한다. 또한, typeof null은 object이다.(자바스크립트 자체 버그) 따라서 null과 undefined 비교시 ==(동등 연산자)가 아닌 ===(일치 연산자)를 사용해야 한다.