[TIL/모던 자바스크립트 Deep Dive] 2023/03/30
8장. 제어문(control flow statement) 코드는 일반적으로 , 즉 위에서 아래 방향으로 순차적으로 실행된다. 이러한 일반적인 코드의 실행 흐름을 인위적으로 제어하기 위해 을 사용하게 된다. 에 따라 등으로 활용된다. 코드의 실행 순서에 인위적으로
8장. 제어문(control flow statement)
코드는 일반적으로 ``Top-Bottom`, 즉 위에서 아래 방향으로 순차적으로 실행된다. 이러한 일반적인 코드의 실행 흐름을 인위적으로 제어하기 위해 `제어문`을 사용하게 된다. `제어(control)의 방식`에 따라 `조건문, 반복문` 등으로 활용된다. 코드의 실행 순서에 인위적으로 변형을 가하는 것은 필연적으로 코드의 `가독성 저하`로 이어지게 된다. 향후에 학습할 forEach, map, filter, reduce 등의 `고차 함수를 사용한 프로그래밍 기법``에서는 제어문의 사용을 억제하여 복잡성을 해결하려고 노력한다고 한다.
8-1. 블록문(block statement/compound statement)

문의 끝에는 세미콜론(;)을 붙이는 것이 일반적이지만, 블록문은 언제나 문의 종료를 의미하는 ```자체 종결성```을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다.
### 8-2. 조건문(conditional statement)
if...else 문

조건식을 평가했을 때, 그 결과가 ``true`이면 `if 문의 코드 블록이 실행`되고, `false`이면 `else 문의 코드 블록이 실행`된다. 조건식은 불리언 값으로 평가되어야 하는데, 만일 if 문의 조건식이 `불리언 값이 아닌 값`으로 평가되면 자바스크립트 엔진에 의해 `암묵적으로 불리언 값으로 강제 변환``된다고 한다. 암묵적 타입 변환에 대해서는 차후에 깊게 배우도록 하겠다.


코드 블록 내의 문(=최소 실행 단위)이 하나뿐이라면 중괄호의 생략이 가능하다. 다음은 중괄호가 생략된 모습이다.

대부분의 if...else 문은 삼항 조건 연산자로 바꿔 쓸 수 있다.

'x%2'의 결과는 불리언 값이 아닌 0이다. 암묵적 타입 변환에 의해 0은 false로 변환되고, 따라서 짝수가 반환된다. 경우의 수가 세 가지라면 다음 코드처럼 쓸 수 있다.

위의 코드를 해석하는 방식은 다음과 같다. 우선 num은 2이기 때문에 true로 변환되고, 괄호('()')와 '영' 중에 괄호('()') 부분을 고려하게 된다. 그 다음 'num>0'이라는 조건식에서도 true이기 때문에 '양수'와 '음수' 중 최종적으로 '양수'를 반환하게 된다.
> **switch 문**

November를 의도하고 작성한 코드인데 'Invalid month'가 출력되었다. 조건에 맞을 때 break를 걸어주지 않으면 switch 문이 끝날 때까지 이후의 모든 case 문과 default 문을 실행하게 된다. 이러한 현상을 ``fall through``라고 한다.

break 문은 코드 블록에서 탈출하는 역할을 한다. break 문이 없다면 case 문의 표현식과 일치하지 않더라도 실행 흐름이 다음 case 문으로 연이어 이동한다.
default 문은 switch 문의 가장 마지막에 위치한다. default 문 실행의 종료는 곧 switch 문 실행의 종료를 의미하기에 별도로 break 문을 작성할 필요가 없다. 그래서 일반적으로 default 문에는 break 문을 생략한다.

More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계