Section 1 - 14일차

노태경·2021년 4월 22일
0

SEB-Section 1

목록 보기
15/30

1. Primitive vs Reference

  • Primitive type(원시타입) : 원시타입의 데이터는 객체가 아니면서 method를 가지지 않음
    • String, Number, Bigint, Boolean, Undefined, Symbol, (null)
  • 원시타입은 하나의 데이터만을 가지고 있다
  • 원시타입은 값 자체에 대한 변경이 불가능(immutable)하지만, 다른 데이터를 재할당 할 수 있다?
  • Reference type : 배열, 객체, 함수
  • Reference type은 heap의 주소지를 사용한다
  • Reference type은 변수를 복사할 때, data가 아닌 메모리 상 주소지를 복사한다. 그렇기에 복사한 변수의 값을 변경하면 원래 변수의 값도 변경된다.

2. 스코프

  • 지역 변수는 전역 변수보다 높은 우선순위를 가짐
  • var는 재선언이 가능하고, 전역 변수이고
  • let, const는 재선언이 불가능하고, 지역 변수이다
  • let, const가 안전성이 높기에 더 권장되는 방식
  • 이떄 let은 값을 재할당하는 것이 가능하지만, const는 재할당은 불가능하다
  • var로 선언한 변수, 함수는 window 객체에 속하게 된다
  • 많은 전역 변수를 선언하면, 의도치 않은 side effect가 발생할 수 있다
  • var은 window 객체의 내장 기능을 사용할 수 없게 할 수도 있다
  • 선언 키워드가 없으면 var로 선언한 것과 같으니 키워드를 사용할 것
  • 'use strict'로 strict mode를 사용하면 문법적인 실수를 에러로 반환

3. 클로저

  • const add = a => b => a+b; 와 같이 화살표 함수를 2번 호출할 수 있음

  • add(1)(2) //3 과 같이 호출

  • add(1) // b => a+b 함수를 리턴
    즉 add function (a) {
    return function(b) {
    return a+b;
    }
    } 와 같은 구조이므로, 내부 함수를 그대로 리턴한 것

  • 클로저 함수는 함수를 리턴하는 형태이다

  • const add3 = add(3); >> 변수 add3은 a에 3이 할당된 채로 보존
    add3(5) // 8 과같이 보존된 변수를 다시 사용할 수 있음

  • 클로저 모듈 패턴
    함수 = () => {
    let 변수 = 0;
    return {
    함수1: () => {변수+1},
    함수2: () => {변수-1},
    함수3: () => {변수},
    } 함수를 여러개 포함한 객체
    }
    const 함수를 담은 변수 = 함수() // {함수1,함수2,함수3}
    정보의 접근 제한이 가능하다(변수에 값을 새롭게 할당할 수 없음, 캡슐화)

    함수를 담은 변수.함수1
    함수를 담은 변수.함수2
    와 같이 접근이 가능하며,

    const 함수를 담은 변수1 = 함수();
    const 함수를 담은 변수2 = 함수();
    와 같이 하나의 함수를 재활용하여 여러개의 변수를 만들수 있다.
    즉 함수를 담은 변수1, 변수2 내부의 변수는 서로 다른 값을 가질 수 있다.

  • 클로저는 모듈화에 유리하다

  • 클로저는 내부 스코프 안에 외부 변수를 가둔다(Close)!

"외부 함수의 변수에 접근할 수 있는 내부 변수"!

profile
개발자 공부 일기😉

0개의 댓글