ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 원시 자료형, 참조 자료형, 스코프, 클로저
    Topic/JavaScript 2021. 11. 24. 21:04
    반응형

    원시 자료형과 참조 자료형  

    원시 자료형 -> string, number, boolean, undefined, (null) 
    : 모두 각각 하나의 데이터를 가지고 있다.
      데이터 보관함 안에 하나의 데이터만 넣을 수 있다.
      원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담긴다.
    참조 자료형 -> 배열([])과 객체({}), 함수(function(){}) (원시 자료형이 아닌 모든 것)
    : 참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장합니다.
      변수에 넣을 수 있는 데이터 크기가 제한되기 때문에 "데이터의 크기가 동적으로 변하는" 특별한 데이터 보관함이 필요해서 등장! 
      참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.

    원시 자료형의 변수에 값 자체가 담기는 예시 ↓
    -> (b와 a가 같고, b에 3을 할당해도 a를 복사해 온 것이기 때문에 a 자체는 그대로 2 이다.

     

    let a = 2;
    let b = a;
    b = 3;
    console.log(a); // 2

     

    참조 자료형에 각각의 데이터 보관함을 쓴다는 의미 ↓
    -> arr2에 arr1을 할당해 arr2 = [1, 2, 3, 4]이어서 이 두 배열은 이름은 다르고, 주소값은 같다.
    그래서 arr2에서 pop()으로 마지막 요소를 제거한다면, arr1과 arr2 모두 같은 주소값을 불러오기 때문에
    결과적으로 arr1도 마지막 요소가 제거된 [1, 2, 3]을 최종적으로 가지게 되는 것을 볼 수 있다.

     

    let arr1 = [1, 2, 3, 4]
    let arr2 = arr1;
    arr2.pop();
    console.log(arr1) //  [1, 2, 3]

     

    스코프 (Scope)  

    스코프는 '범위'라는 의미

    스코프는 "변수 접근 규칙에 따른 유효 범위"

    안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대는 불가능
    가장 바깥쪽의 스코프는 전역 스코프(Global Scope) / 전역이 아닌 다른 스코프는 전부 지역 스코프(local scope)

    지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

      let const var
    유효 범위 블록 스코프 및
    함수 스코프
    블록 스코프 및
    함수 스코프
    함수 스코프
    값 재할당 가능 불가능 가능
    재선언 불가능 불가능 가능

    클로저 (Closure)  

    "외부함수의 변수에 접근할 수 있는 내부함수"
    "함수와 함수가 선언된 어휘적(lexical) 환경의 조합을 말한다.
    이 환경은 클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다."

    함수를 리턴하는 함수 / 함수를 리턴하는 함수가 클로저의 형태를 만든다.

    "내부 함수는 외부 함수에 선언된 변수에 접근 가능하다"

     

     


    반응형
Designed by LEO.