매일 TIL을 쓰겠다는 다짐을 계속 지키지 못하고 있다.
다음 주부터는 아예 하루 일과 중 블로깅하는 시간 1시간을 고정해 놓아야 할 것 같다.
수요일부터 금요일까지 배운 내용을 복습 겸 간략하게 정리해보기로 했다.
스코프는 '변수 접근 규칙에 따른 유효 범위' 를 말한다. 변수는 정해진 환경 안에서 사용이 가능한데, 그래서 각각의 변수는 각각의 유효한 활동 범위를 지니고 있다. JavaScript는 기본적으로 함수가 선언되는 동시에 자신만의 스코프를 가진다.
전역 스코프(Global scope) :
변수가 함수 바깥이나 중괄호 ({}) 바깥에 선언되었다면, 전역 스코프에 정의된다고 한다. 전역 변수를 선언하면 코드 모든 곳에서 변수를 사용할 수 있지만, 두 개 이상의 변수 이름이 충돌하는 경우가 생길 수 있기 때문에 항상 지역변수로서 변수를 선언하는 것이 좋다.
지역 스코프(Local Scope) :
코드의 특정 부분에서만 사용할 수 있는 변수를 지역 스코프에 선언했다고 하며, 이들을 '지역 변수'라고 부른다. 지역 변수는 함수 내에서 전역 변수보다 높은 우선순위를 가진다.
함수 스코프(Function Scope) :
말 그대로 함수 내에서 변수를 선언하면, 그 함수 바깥에선 해당 변수에 접근할 수 없다는 것을 의미한다.
블록 스코프(Block Scope) :
블록은 중괄호{}를 말한다. 중괄호 내에서 변수를 선언하면, 이 변수들은 중괄호 내에서만 접근이 가능하다.
이해하기 어려운 개념이었다. 하지만 스코프를 제대로 이해했다면 이미 클로저의 핵심 원리는 파악했다고 보면 된다.
클로저(Closure) :
외부 함수의 변수에 접근할 수 있는 내부 함수
함수 내부에 함수를 작성할 때마다 클로저는 생성된다.
안쪽 스코프에서 바깥쪽 스코프에 접근하는 것이 가능하다는 것이 스코프의 원리였고, 이와 동일한 개념을 함수 단위로 설명한 것을 클로저라고 보면 된다.
테스트빌더 과제를 수행하면서 익혔던 개념이다.
TDD(Test-driven Development) : 코드를 작성하기 전에 테스트를 먼저 작성하는 방법론
장점 : 테스트를 먼저 작성하기 때문에 이미 어느 정도 바람직한 결과에 대한 고민이 끝난 상태에서 개발을 진행하게 된다. 따라서 버그가 적어지고, 기획에 도움이 된다.
단점 : 속도가 느려진다(...) 하지만 완전한 TDD를 실천할 순 없더라도 자동화된 테스트를 작성하는 것은 기본 중의 기본이다!
유닛 테스트 : 프로그램의 작은 유닛(함수)들이 잘 돌아가는지 확인하는 테스트
- Assertion(주장) : 코드가 이런 방식으로 작동해야 한다고 이야기하는 주장 코드
- Matcher : 주장 코드의 실행 결과
정말정말 이해하기 어려웠던 '클래스'라는 개념의 등장에 멘붕이 왔고, 아직도 제대로 이해했는지 확신이 들지는 않는 파트다. 실습이 많이 필요할 것 같다.
객체 지향 프로그래밍 : 하나의 모델이 되는 '청사진'을 만들고 그걸 바탕으로 한 객체(object)를 만드는 패턴의 프로그래밍
클래스(Class) : '청사진'이라고 생각하면 된다.
클래스는 함수(function)로 정의할 수도 있고, 키워드(class)로 정의할 수도 있다. 클래스는 첫글자를 대문자로 쓰자!
인스턴스(Instance) : 청사진으로 바탕으로 한 '객체'라고 생각하면 된다. 'new' 키워드를 통해 만들 수 있다.
클래스엔 '속성'과 '메소드'를 정의를 하고, 인스턴스에서 활용한다.
이 파트는 직접 활용할 수 있을 정도로 완전한 이해를 아직 못한 관계로 MDN 링크를 남기는 것으로 갈무리하고 다시 공부한 후 수정할 예정이다.
객체 지향 자바스크립트 개요