TWIL - 2주차 회고

Zoey Song ·2020년 5월 17일
0

그동안 티스토리에 일기 형식으로 나만 알아보기 쉬운 TIL 블로그를 작성해왔다. 그러던 중 2주차 금요일에 진행된 Course Reflection 시간을 통해 블로그의 중요성을 실감하며 조금 더 개발 블로그다운 만들어보기 위해 티스토리에서 벨로그로 넘어오기로 하였다. 3주차부터는 조금 더 자세하게 내가 무엇을 배웠는지에 대하여 더 자세하게 써볼 예정이다.

매일 빠른 속도로 진행된 개념 주입으로 조금 버겁고 힘들었었던 2주차. 배웠던 개념들을 다시 정리해보자.

  1. 배열 메소드
  2. 재귀함수
  3. Algorithm & better code
  4. Command line
  5. Git
  6. Scope
  7. Closer
  8. 객체 지향 프로그램
  9. 매개변수 복습

1. 배열 메소드

  • Array.isArray : 배열 판별하기
  • indexOf, includes : element의 존재여부 확인하기
  • push, pop, shift, unshift : 배열의 element 넣고 빼기
  • slice : 원본이 변하지 않는 새로운 배열 만들기, 배열에서 일부분 잘라내기
  • forEach : 명령형 반복문을 함수로 작성하기
  • map : 배열의 형태 바꾸기
  • filter : 조건에 따라 걸러내기
  • reduce : 배열 축소하기

2. 재귀함수

  • 재귀함수란?

    함수가 자기 자신을 호출하는 함수이고, 이러한 행위를 가리켜 재귀 호출(recursive call)이라고 한다.

  • 언제 쓰이는가?

3. Algorithm

  • 알고리즘이란?

    어떤 값을 입력받아 다른 값을 출력하는 계산 절차

  • 알고리즘 작성법의 중요성

4. Command Line

5. Git

6. Scope

  • 자바스크립트에서 '스코프'란 변수가 영향을 미치는 범위 즉 변수를 사용할 수 있는 유효범위이다. 스코프에는 1) 전역 스코프 (Global Scope)와 2) 지역 스코프 (Local Scope)두 가지가 존재한다.

Global Scope
변수가 함수 바깥이나 중괄호 {} 바깥에 선언되었다면 전역 스코프에 정의된다.

  • 전역변수를 선언하면, 코드 모든 곳에서 해당 변수 사용이 가능하다. (함수포함)

  • 하지만 전역 스코프에 변수를 선언할 수 있어도 그러지 않는 것이 좋다. 왜냐하면 두 개 이상의 변수가 충돌할 수 있기 때문이다. 만약 변수를 const 나 let을 사용하여 선언했다면 이름에 충돌이 발생할 때 마다 에러가 발생한다.

  • 만약 var을 사용하여 변수를 선언했다면 두번째 변수가 첫번째 변수를 덮어 쓰게 된다. 이러면 디버깅이 어려워지기 때문에 사용을 지양한다.

Local Scope
코드의 특정 부분에서만 사용할 수 있는 변수를 지역 변수라고 하고, 변수는 지역 스코프에 있다.

  • 지역변수는 함수 내에서 전역변수보다 더 높은 우선 순위를 가진다.

  • 자바스크립트에는 함수 스코프 (function scope)와 블럭 스코프 (block scope) 두가지 지역변수가 존재한다.

  1. 함수 스코프

    • 함수 내부에서 변수를 선언하면, 그 변수는 선언한 변수 내부에서만 접근할 수 있다. 함수 바깥에서는 해당 변수에 접근할 수 없다.
  2. 블럭 스코프

    • 중괄호({}) 내부에서 const 또는 let으로 변수를 선언하면, 그 변수들은 중괄호 블록 내부에서만 접근할 수 있다.

7. Closure

  • 클로저란 Javascript의 유효범위, Scope를 이용하여 생명 주기가 끝난 외부함수의 변수를 참조하는 방법이다.

  • 외부함수가 종료되더라도 내부함수가 실행되는 상태이면 내부함수에서 참조하는 외부 함수는 닫히지 못한다.

  • 따라서 외부 함수가 종료되기 위해서는 내부함수가 종료되어야하기 때문에 클로저(Closure)라고 불리운다

  • 언제 사용하는가?
    클로저를 사용하는 이유는 전역 변수의 오/남용이 없는 깔끔한 코드를 작성할 수 있기 때문이다.

    클로저에서 주의 할점은 내부함수에서 참조하는 외부 함수의 변수는 복사(Clone)본이 아닌 값을 직접 참조한다는 것이다.

  • 외부 함수를 실행하면 내부 함수가 리턴된다.

  • 커링: 함수 하나가 n개의 인자를 받는 대신, n개의 함수를 만들어 각각 인자를 받게 하는 방법.

  • 외부 함수의 변수가 저장되어 마치 재사용이 계속 가능한 템플릿 함수처럼 사용 가능.

  • 클로저 모듈 패턴 : 변수를 스코프 안쪽에 가두어 함수 밖으로 노출 시키지 않는 방법 - 클로저를 이용하여 외부 함수의 변수를 private으로 지정할 수 있다.

스코프와 클로져는 가장 이해가 어려웠던 부분이다. 글을 작성하는 이순간에도 만약 아리송한 것이 사실이다. 계속 개념과 예제를 통해서 봐야할 것 같다.

8. 객체 지향 프로그램 (Object Oriented Program)

  • 하나의 모델이 되는 청사진(blueprint)을 만들고 -> class
    그 청사진을 바탕으로 한 객체(object)를 만드는 -> instance
    프로그래밍 패턴
  • new 키워드를 통해 클래스의 인스턴스를 만들어낼 수 있다.
  • 클래스에 속성과 메소드를 정의하고 인스턴스에서 이용한다.
  • constructor : 인스턴스가 초기화될 때 실행하는 생성자 함수
  • this : 함수가 실행될 때, 해당 스코프마다 생성되는 고유한 실행 context (excution context) new 키워드로 인스턴스를 실행했을 때는 해당 인스턴스의 값이 바로 this가 된다. --> 자세한 개념 보충 필요
  • 배열을 정의하는 것은 Array의 인스턴스를 만들어내는 것과 동일하다.
let arr = ['code' , 'states' , 'pre'] 
let arr = new Array('code', 'states', 'pre')

9. 매개변수

  • Rest Parameter
  • arguments 키워드
profile
비전공자의 개발도전기

0개의 댓글