JavaScript

  1. JavaScript
  2. 불변성
  3. 스코프
  4. 실행컨텍스트
  5. CI / CD
  6. Ajax, Axios, fetch
  7. XHR - Xml Http Request
  8. 호출 스케줄링
  9. 이벤트 흐름,이벤트 종류, 이벤트 위임
  10. Closure
  11. Map / Set
  12. documentFragment

목차

원시 타입은 불변하고, 참조타입은 가변적이다.

자바스크립트의 원시타입 : Number, String, Boolean, Null, undefined, symbol

자바스크릅티의 참조타입 : Object, array, Function, Date, RegExp, Map,set.....

원시타입 예시 1 - 자바스크립트의 원시 타입은 불변한다?

let a = 1
 
console.log(a) // 1

아주 간단한 예제가 있다 변수 a에 원시타입인 1을 할당해 주었다. 이럴 경우 JavaScript의 메모리 영역에서는 어떤 변화가 일어날까?

스크린샷 2022-03-19 10.54.54.png

변수 영역에 생긴 변수 a는 데이터 영역에 있는 1의 값을 가리킨다. 이때 1의 값을 직접적으로 참조하고 있는것이 아닌 데이터 “1”이 저장된 주소를 저장한다.

원시타입 예시 2 - 원시값에 다른 값을 재 할당 해보자

let a = 1
a = 2
console.log(a) // 2

스크린샷 2022-03-19 10.58.59.png

변수 a에 다른 값을 재 할당할 경우 기존의 값을 덮어씌우는게 아닌 “2”가 저장된 새로운 주소를 변수a에 저장한다. 이때 기존에 있던 “1”은 더이상 아무런 참조가 이루어지지 않을 경우 가비지컬렉터에 의해서 초기화된다.

원시타입 예시 3 - 서로 참조하기

let a = 1
let b = a;

a = 2

console.log(a) // 2
console.log(b) // 1

스크린샷 2022-03-19 11.02.56.png

만약 변수 b에 변수 a의 값을 할당하고 다시 변수 a의 값에 2를 재 할당 하면 어떻게 될까? 이런 경우에는 변수 b는 a가 기존에 참조하고 있던 주소값을 참조한다. 그리고 변수 a는 새로운 2의 메모리 주소를 참조하게된다.