코드스피치 강의 ES6+ 2회차 정리
July 18, 2020
외부 라이브러리와 복잡한 클래스를 이해 못하는 이유?
- FLOW에 대해서 이해하지 못하고 있는 상태
- FLOW 제어하지 못하기 떄문에 FLOW 제어 코드를 봐도 모르는 것
LABEL, BREAK, CONTINUE
- LABEL IDENTIFIER :
- 변수를 선언할 때처럼 만들 수 있으나, 마지막은
:
으로 끝나야 한다.
- 특징
- 스코프의 기준은 함수!, 블록이 아니다
- 레이블 범위 => 레이블 레인지
- 레이블은 레이블이 끝나는 부분을 호출한다(일반 함수는 바디 첫 부분을 호춣해서 실행)
- BREAK LABEL ;
- 현재 레이블 컨택스트를 탈출 할 때 사용
- Break 라벨은 익명으로 사용되면 현재 포함 되 있는 익명 레이블을 생성시켜 탈출한다.
- CONTINUE LABEL ;
- 컨티뉴는 익명 없으므로 항상 다음 단계로 넘어간다.
- 결론
- 레이블을 통해 흐름을 제어 할 수 있으며, 함수 및 {}을 기준으로 흐름을 나누어 줄 수 있다.
- 이터레이터 셋(for 문에서 사용되는 레이블) : 별도의 레이블을 생성안해도 사용 가능
- 레이블 셋(중괄호를 이용해서 사용되는 레이블) : 없으면 안된다. 무조건 레이블을 만들어줘야함
자바스크립트에 더 깊이 알아보자
- 레코드란?
- Javascript 엔진은 코드나 함수를 기준으로 하나의 레코드로 생성하여 실행시킨다
- 여러개의 레코드로 구성된 하나의 실행 파일을 만들어준다
- 레이블 또한 하나의 레코드인데 레이블이 부정확하거나 이상하면 파일을 만들지 못해 문법 에러 발생
- 변수의 특징
- 변수는 영원히 존재하지 않고 특정 시점이 되면 사라진다.
- 라이프 사이클과 접근권한(Scope)를 가진다.
- 하지만 자바스크립트는 접근권한을 라이프 사이클로 하나의 뜻으로 사용된다.
- 자유변수
- 함수를 기준으로 매개변수, 지역변수 외에는 자유변수 이다.
- 클래스는 기준은로 생성자의 매개변수, 멤버 변수, 메서드의 메개변수 외의는 자유변수다.
- 자유변수란, 함수나 인스턴스의 상관없이 자기는 자기의 권한을 모르는 것
- 자유변수란, 나의 생명주기 및 스코프 안에 있어도 내가 사용되는 변수는 한정 되있는데 그 외는 자유변수
- 이러한 자유변수가 사용되는 곳을 클로져라고 한다.
- 쉐도잉
- 덮어씌어진다는 의미로 똑같은 변수의 이름이 있다면 가까운 쪽으로 값이 할당된다는 것
레이블은
쉐도잉이 일어나지 못한다, Syntax Error 발생(레코드를 생성 못하기 때문에)
SWITCH / IF / IF-ELSE
- SWITCH
- 스위치 문안에 있는 중괄호는
특수 레이블 블록
이라고 한다
- 다른 언어들은 case를 맵으로 구성하는데 자바스크립트는 레이블을 통해서 구현
- 두개의 조건을 판단하기 때문에 에러가 발생할 확률이 높다 default 문을 꼭 작성해야함
- IF-ELSE
- 다른 문과 다른게 두개의 문을 가진다
- Mandatory => 무조건 else 문에서 실행시켜야 할 문을 해야 한다.
- ELSE IF()는 지양한다. 개발자는 분기를 처리하는 기준이 많아지면 안된다. 다시 조건문을 만들어라.
- 결론 : 복잡성을 줄이는 것은 얼마나 조건문을 쉽고 예외처리를 해줬는가에 달렸다.
FOR / while / do-while
- for
- 첫번째는 문/식, 두번째는 trusy이면 실행할 값, 세먼제는 문/식
- 모두다 비워졌있으며 예외조건으로 Trusy로 판단하여 무한 루프
- while
- 단문을 짜면 안된다. 무조건 중문! 두줄 이상으로 짜서 확실히 해라
- 조건에 대한 변수? 값? 식? 을 꼭 중문안에서 변화를 주어야 한다.
- 유지보수에 용이하다. 테스트 코드를 짜기에도 좋다.
- do-while
- while가 동일하지만, 미리 한번 실행한다는 특징을 가진다.
- 결론 : 코드를 작성할때는 항상 쉽고, 예외를 처리할수 있게 짜야한다.