클라이언트 >> 브라우저(뷰) >> 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)**이라 할 수 있다.
참조 타입과 원시 타입의 가장 큰 차이점은, 객체의 변수(프로퍼티) 영역이 추가로 존재 한다는 것이다.
- 기본형 데이터와 차이는 '객체의 변수(프로퍼티) 영역'이 별도로 존재하는 점
- 데이터 영역에 저장 된 모든 값은 불변값
- 변수 영역에 저장 된 값은 가변값
- 불변값이 들어가야 되는 데이터영역에 가변값을 갖는 객체 프로퍼티 주소를 가지고 있기 때문에 참조형 데이터는 가변한다고 표현
위에 적은 설명으로 대체합니다 … ..
- 데이터 영역에 저장 된 모든 값은 불변값
- 변수 영역에 저장 된 값은 가변값
- 불변값이 들어가야 되는 데이터영역에 가변값을 갖는 객체 프로퍼티 주소를 가지고 있기 때문에 참조형 데이터는 가변한다고 표현
'더존 노션 필기 옮기기 > HTML CSS JavaScript' 카테고리의 다른 글
자바스크립트 5일차 JS Window, DOM, BOM, EVENT (1) | 2022.09.08 |
---|---|
JavaScript 4일차 클래스, 화살표함수, 심볼, 이터레이터, 스프레드 문법, 구조분해 (2) | 2022.08.30 |
JavaScript 3일차 생성자함수, 상속, 배열+배열 함수 + 엄격모드(알아서공부) (1) | 2022.08.30 |
JavaScript 2일차 기본 문법 (1) | 2022.08.30 |
HTML + CSS (1) | 2022.08.30 |