DAY 014. 코드스테이츠 3주차 - JS (핵심 개념과 주요 문법 1)

1. 원시 자료형과 참조 자료형

원시 자료형(Primitive Type)

고정된 저장 공간을 차지하는 데이터.
원시 자료형은 하나의 정보 및 데이터만을 담고 있다.

원시 타입 데이터
객체가 아니면서 method를 가지지 않는 타입
string, number, bigint, boolean, undefined, symbol, (null)

예시

let myName = 'steve';
let num1 = 12;
let isAdult = true;
let init01 = undefined;
let init02 = null;

참조 자료형(Reference Data Type)

원시 자료형이 아닌 모든 것.
배열, 객체, 함수가 대표적인 참조 자료형이다.
참조 자료형을 변수에 할당할 때에는 값이 아닌 주소를 저장한다.

예시

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이라고 부른다.

원시 자료형과 참조 자료형의 특징

  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
  • 그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있다.

2. 스코프

스코프란?

변수에 접근할 수 있는 범위를 스코프(scope)라고 한다.
범위는 중괄호(블록) 또는 함수에 의해 나뉘어진다.

스코프의 규칙

규칙 1

바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능하다.
반면에, 안쪽에서 선언한 변수는 바깥쪽 스코프에서는 사용 불가능하다.

규칙 2

스코프는 중첩이 가능하다.

가장 바깥쪽의 스코프는 전역 스코프(Global Scope)라고 부른다.
전역의 반댓말은 지역(local)로 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)라고 부른다.

규칙 3

지역 스코프에 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수이다.
지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

예시

let name = '홍길동';

function showName() {
  let name = '이순자'; // 지역 변수
  console.log(name); // 두번째 출력 : 이순자
}

console.log(name); // 첫번째 출력 : 홍길동
showName();
console.log(name); // 세번째 출력 : 홍길동

전역변수 let name 과 지역변수 let name 은 다르다!

스코프의 종류

블록 스코프(block scope)

중괄호를 기준으로 범위가 구분된다.

함수 스코프(function scope)

함수를 기준으로 범위가 구분된다.

화살표 함수 = 블록 스코프(block scope)

유의해야할 점은 화살표 함수는 블록 스코프로 취급된다.

3. 클로저 함수(Closure Function)

클로저 함수란?

함수를 리턴하는 함수

좋은 웹페이지 즐겨찾기