조건문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다. 조건식은 불리언 값으로 평가될 수 있는 표현식이어야 한다.
조건문은 if else 문과 switch 문이 있다.
주어진 조건식(조건식은 불리언 값으로 평가되며, 그렇지 않으면 불리언 값으로 암묵적 타입 변환되어 실행)의 평가 결과에 따라 실행할 코드 블록을 결정한다. 조건식의 평가 결과가 true일 경우, if 문의 코드가 실행되며, 평과 결과가 false일 경우 else문의 코드가 실행된다.
만약 조건식을 추가하여 조건에 따라 실행될 코드 블록을 늘리고 싶다면 else if 문을 사용한다.
사용법
if (조건식1) {
//조건식1이 참이라면 식 실행
} else if (조건식2) {
//조건식2가 참이라면 식 실행
} else {
//조건식1과 조건식2가 모두 거짓이면 식 실행
}
주어진 조건식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. 만약 조건식과 일치하는 case 문이 없다면 실행 순서는 default 문으로 이동한다.
주의할 점으로, case 문을 실행한 후 자동으로 switch 문을 탈출하지 않는다. 해당하는 case 문으로 이동한 뒤 brake문을 사용하지 않는다면 switch문이 끝날 때까지 모든 case 문과 default 문을 실행하는데, 이를 폴 스루(fall through)라고 한다. 이를 막기 위해 case 문에는 break 문을 삽입하는 것이 좋다.
조건식의 평가 결과가 참인 경우 코드 블록을 실행하며, 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한다. 이는 조건식의 평가 결과가 거짓일 때까지 반복된다.
JavaScript는 for 문, while 문, do...while 문, for...in 문, for...of 문, forEach 메소드를 제공한다.
for 반복문은 어떤 특정한 조건이 거짓으로 판별될 때까지 반복한다.
초기문이 존재한다면 실행되며, 보통 1이나 반복문 카운터로 설정되지만 변수나 복잡한 구문으로 표현 될 때도 있다. 조건문은 조건을 검사하는데, 만약 조건문이 참이라면, 그 반복문은 실행된다. 조건이 거짓이라면 for 문은 종료되고 만약 조건문이 생략된다면 그 조건문은 참으로 추정된다.
증감문이 존재한다면 실행된 후 반복을 재개한다.
for([초기문]; [조건문]; [증감문])
while 반복문은 for문과 같이 어떤 특정한 조건이 거짓으로 판별될 때까지 반복한다. 보통 for 문은 반복 횟수가 명확할 때 사용하고 while 문은 반복 횟수가 불명확할 때 사용한다.
조건식의 평가 결과가 언제나 참이면 무한 루프가 되는데, 무한루프를 탈출하기 위해 if 문과 break 문으로 탈출 조건을 만드는 것이 좋다.
do...while 문은 코드 블록을 먼저 실행하고 조건식을 평가한다. 즉, 코드 블록은 무조건 한 번 이상 실행된다. 이 외에 효과는 while문과 동일하다.
for...in 문은 객체 모든 프로퍼티를 순회하며 열거합니다. 배열 요소를 반복하는 방법으로 사용할 수도 있지만, 만약 배열에 대해 프로퍼티 또는 메소드를 추가하는 등 Array 객체를 수정한다면 배열 요소 이외에도 프로퍼티가 열거되기 때문이다.
for (변수선언문 in 객체) {...}
for...of 문은 ES6에서 도입된 이터레이션 프로토콜(iteration protocol)은 순회 가능한(iterable) 데이터(배열, 문자열) 등을 이터러블 프로토콜을 준수하는 이터러블이라는 객체로 통일하여 사용하기 위한 반복문 중의 하나이다.
for...of 문은 이터러블을 순회하며 이터러블의 요소를 변수에 할당한다.
for (const item of [1, 2, 3]) {
//item 변수에 순차적으로 1, 2, 3을 할당한다
console.log(item) // 1 2 3
}
이 내용은 지금 배우지 않은 내용이 너무 많아 이론 설명만 하겠다.
먼저, 함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화하여 불변성을 지향하는 프로그래밍 패러다임이다. 이를 위해선 조건문과 반복문, 변수 사용을 최소화하여 복잡성을 해결하여야 한다.
forEach 메소드는 for 문을 대체하는 higher-order function(함수의 매개변수를 통해 외부에서 콜백 함수를 전달받은 함수)로써, 내부에서 반복문을 통해 배열을 순회하며 수행해야 할 함수를 callback function(함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수)로 전달받아 반복 호출한다. 즉 for 문과 하는 역활은 동일하다.
arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])