클라이언트 >> 브라우저(뷰) >> Request (Controller) (자바프로그램) >> DB

클라이언트 << 브라우저(뷰) << Response << DB

 

 

 

document.getElementById(”아이디명”)

 


자바스크립트의 변수, 데이터 타입

원시 타입의 불변성 (immutable)

자바스크립트에서 원시 타입은 변수에 할당될 때 메모리에 고정 크기로 원시 값을 저장하고 그 값을 변수가 직접 가리키는 형태를 띈다.

즉 데이터를 저장하기 위한 별도의 데이터 공간을 확보해 값을 저장하고, 그 공간을 변수 영역에 저장한다.

➡️ 변수 영역과 데이터 영역이 존재 <<<<<<< 기억!!!!!!!!!!!

 

이렇게 할당된 값은 **불변성(immutable)**을 갖는다.즉 메모리에 할당된 원시 타입의 값은 그 자체가 변경될 수 없다. ( 메모리 주소가 변경되는 것이다 )

이에 대해 조금 더 자세히 설명해 보자면, 변수에 값을 재 할당할 때 기존 값이 변하는 것처럼 보이지만 사실은 새로운 메모리에 재 할당한 값이 저장되고 변수가 가리키는 메모리가 달라지는 것이다.

 

 

string 의 주소값이 계속 바뀌면서 '새 메모리 값'이 저장되고 있다는 말 .

(사진 속 주석의 의미가 조금 모호해서 이걸로 이해하기 바람)

 

 


메모리의 개념은 자꾸 자꾸 말해도 어렵고 중요한 내용이라 중복이지만 또 작성하겠습니다

변수 영역과 데이터 영역이 따로 존재합니다. (중요, 기억)

 

변수 영역에는 변수의 이름과 데이터의 ‘주소값’ 만 들어있습니다.

 

데이터 영역의 주소값 에는

@5004 >> ‘abc’

@5005 >> ‘abcdef’

이 저장되어있고

 

let a = ‘abc’;

@5004 가 저장되어있던 변수 a 에 ‘abcdef’ 값을 재 할당 하려고 하면,

a = ‘abcdef’;

변수 a 의 메모리 주소가 @5005 로 교체가 됩니다.

 


 

불변값 (Immutable Value)

  • 변수와 상수를 구분 짓는 요소 : 변수 영역 메모리의 변경 가능성
  • 불변성 여부를 구분 짓는 요소 : 데이터 영역 메모리의 변경 가능성
  • 기본형 데이터(Number, String, Boolean, Null, Undefined, Symbol)들은 모두 불변값

원시 타입에 속하는 데이터 타입에는

숫자(Number & Bigint)

문자열(String)

논리형(Boolean)

null, undefined

심볼(Symbol) 이 있다.

참조 타입 (Reference Type)

자바스크립트에서 원시 타입을 제외한 나머지는 참조 타입**(객체, Object)**이라 할 수 있다.

참조 타입과 원시 타입의 가장 큰 차이점은, 객체의 변수(프로퍼티) 영역이 추가로 존재 한다는 것이다.

  • 기본형 데이터와 차이는 '객체의 변수(프로퍼티) 영역'이 별도로 존재하는 점
  • 데이터 영역에 저장 된 모든 값은 불변값
  • 변수 영역에 저장 된 값은 가변값
  • 불변값이 들어가야 되는 데이터영역에 가변값을 갖는 객체 프로퍼티 주소를 가지고 있기 때문에 참조형 데이터는 가변한다고 표현

 

 

 

위에 적은 설명으로 대체합니다 … ..

  • 데이터 영역에 저장 된 모든 값은 불변값
  • 변수 영역에 저장 된 값은 가변값
  • 불변값이 들어가야 되는 데이터영역에 가변값을 갖는 객체 프로퍼티 주소를 가지고 있기 때문에 참조형 데이터는 가변한다고 표현

+ Recent posts