고정된 저장 공간을 차지하는 데이터.
원시 자료형은 하나의 정보 및 데이터만을 담고 있다.
원시 타입 데이터
객체가 아니면서 method를 가지지 않는 타입
string
,number
,bigint
,boolean
,undefined
,symbol
,(null)
예시
let myName = 'steve';
let num1 = 12;
let isAdult = true;
let init01 = undefined;
let init02 = null;
원시 자료형이 아닌 모든 것.
배열, 객체, 함수가 대표적인 참조 자료형이다.
참조 자료형을 변수에 할당할 때에는 값이 아닌 주소를 저장한다.
예시
let arr = [1, 2, 3, 4, 5];
let obj = {
name: 'steve',
age: 19,
city: 'seoul',
}
let fnc = function(str) {
alert(str);
}
참조 자료형 데이터 자체는 원시 자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함에
저장된다. 이 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장된다. 즉, 변수
에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고, 이 주소를 따라가보면 특별한 데이
터 보관함을 찾을 수 있는데, 이 특별한 데이터 보관함에서는 자기 마음대로 사이즈를 늘렸다 줄였
다 한다. 이걸 다른 말로 동적(dynamic)으로 변한다라고도 하는데 이처럼 데이터는 별도로 관리
되고 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 Reference type이라고 불린다.
이런 특별한 데이터 보관함을 heap이라고 부른다.
변수에 접근할 수 있는 범위를 스코프(scope)라고 한다.
범위는 중괄호(블록) 또는 함수에 의해 나뉘어진다.
바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능하다.
반면에, 안쪽에서 선언한 변수는 바깥쪽 스코프에서는 사용 불가능하다.
스코프는 중첩이 가능하다.
가장 바깥쪽의 스코프는 전역 스코프(Global Scope)라고 부른다.
전역의 반댓말은 지역(local)로 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)라고 부른다.
지역 스코프에 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수이다.
지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.
예시
let name = '홍길동';
function showName() {
let name = '이순자'; // 지역 변수
console.log(name); // 두번째 출력 : 이순자
}
console.log(name); // 첫번째 출력 : 홍길동
showName();
console.log(name); // 세번째 출력 : 홍길동
전역변수 let name
과 지역변수 let name
은 다르다!
중괄호를 기준으로 범위가 구분된다.
함수를 기준으로 범위가 구분된다.
유의해야할 점은 화살표 함수는 블록 스코프로 취급된다.
함수를 리턴하는 함수