자바스크립트 데이터타입과 변수정리
데이터타입
원시타입과 객체타입이 있다.
원시타입
원시타입 : number , string , boolean , null , undefined , Symbol
특징 : 스택영역 메모리셀에 직접 값을 담고 있다. 그래서 값을 바꾸면 직접 메모리셀 주소에 가진 값이 변경됨.
객체타입
객체타입 : 원시타입 외 전부
특징 : 메모리셀의 Heap영역에 저장된다. 객체의 변수는 자신의 메모리셀에 Heap영역의 주소를 갖고 있다.(참조)
타입별 추가 내용정리
- 카멜명명법 : camelCase을 쓰자.
- bigInt를 쓰는 방법 : 엄청 긴 숫자 마지막에 n을 붙이면 전체 숫자가 다 튀어나옴. (아주 큰 정수도 정확하게 표현)
- 어떤 숫자를 0으로 나누면 Infinity , -0으로 나누면 -Infinity , 숫자를 문자로 나누면 NaN(산술연산불가)
- 문자열에 \n은 한줄내림 , \t는 탭, ``를 사용시 ${variable} 을 합쳐서 혼합해서 사용가능.
- 0 , ‘‘(공백) , null , undefined , NaN 은 False와 같다.
(Falsy) 이값들을 boolean으로 대체하고 싶다면, 앞에 느낌표 두개를 붙이면 된다. (!!) - 숫자, 문자, object(객체) , 배열, Infinity 는 True와 같다.
(Truthy) 이값들도 boolean으로 대체하고 싶다면, 앞에 느낌표 두개를 붙이면 된다. (!!) - 변수에 아무런 값을 주지않으면 undefined이다.
- null은 객체이다. 비어있음을 명시해주는거라고 보면 됨. (null이 객체인건 자바스크립트 버그)
- 객체의 변수는 Heap영역의 주소를 참조한다. (자신의 메모리셀에 Heap영역의 주소를 가지고있다.)
- 자바스크립트는 동적언어이다.(런타임에 타입이 결정됨)
- typeof를 사용하면, 데이터타입을 알 수 있다.
자바스크립트 변수정리
자바스크립트는 인터프리터언어로 변수가 값에 의해 정해진다.
let 과 const
let : 값을 변경할 수 있다. (메모리셀이 가진 값 변경)
const : 값을 변경할 수 없다. (메모리셀이 가진 값 변경X) , 상수 또는 상수변수라고도 함.
하지만 const변수라고해서 객체의 값을 바꾸지 못하는 것은 아니다.
왜냐하면 객체의 값은 Heap영역에 있는것이고, const변수는 자신의 메모리셀에 Heap영역의 주소를 저장하고 있기때문에,
Heap영역의 메모리주소를 변경 못하는 것이지, Heap영역의 값을 변경못하는 것은 아님.
This post is licensed under CC BY 4.0 by the author.