8.1 블록문
- 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다
- 자바스크립트는 블록문을 하나의 실행 단위로 취급한다
- 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다
{
var foo = 10;
}
var x = 1;
if(x < 10) {
x++;
}
function sum(a, b) {
return a + b;
}
8.2 조건문
- 주어진 조건식의 평가 결과에 따라 코드(블록문)의 실행을 결정한다
- 조건식은 불리언 값으로 평가될 수 있는 표현식이다
- if...else / switch 문 두 가지 조건문을 제공한다
8.2.1 if...else문 ⇒ 논리적 참, 거짓으로 실행할 코드 블록을 결정한다
- 주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평가 결과, 즉 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다
if(조건식) {
}else {
}
=> 반대일 경우도 있다!!!
if(조건식1) {
}else if(조건식 2) {
}else {
}
=> 반대일 경우도 있다!!
var num = 2;
var kind = num ? (num > 0 ? '양수' : '음수') : '영';
console.log(kind);
- 삼항 조건 연산자는 값으로 평가되는 표현식을 만든다
- 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 때문에 변수에 할당할 수 있다
8.2.2 switch문 ⇒ 다양한 상황에 따라 실행할 코드 블록을 결정할 때 사용한다
- 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다
- case문은 상황을 의미하는 표현식을 지정하고 콜론으로 마친다
- case문이 없다면 실행 순서는 default 문으로 이동한다 ⇒ default 문은 선택 사항으로 생략 가능
- break 키워드로 구성된 break문은 코드 블록에서 탈출하는 역할을 한다(default 문은 break문이 별도로
필요 없다)
switch (표현식) {
case 표현식1:
switch 문의 표현식과 표현식1이 일치하면 실행될 문;
break;
case 표현식2:
switch 문의 표현식과 표현식2이 일치하면 실행될 문;
break;
default:
switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문;
}
8.3 반복문
- 조건식의 평가가 거짓일 때까지 조건식의 평가 결과가 참인 코드블록 반복하여 실행한다
- 자바스크립트는 세 가지 반복문인 for문, while문, do...while 문을 제공 한다
- 반복문을 대체할 수 있는 다양한 기능
- 배열을 순회할 때 사용하는 ⇒ forEach 메서드
- 객체의 프로퍼티를 열거할 때 사용하는 ⇒ for...in문
- ES6에서 도입된 이터러블 순회할 수 있는 ⇒ for...of문
for(변수 선언문 또는 할당문; 조건식; 증감식) {
조건식이 참인 경우 반복 실행될 문;
}
for(;;) {
...
}
let count = 0;
while(count < 3) {
console.log(count)
count++;
}
while(true){
...
}
let count = 0;
while(true) {
console.log(count);
if(count === 3) break;
}
let count = 0;
do {
console.log(count);
count++;
}while (count < 3);
8.4 break문
- 레이블 문, 반복문, switch문의 코드 블록 외에 break 문을 사용하면 SyntaxError(문법 에러)가 발생
한다
- 레이블 문은 식별자가 붙은 문을 말한다 ( switch문의 case 문과 default 문도 레이블 문이다!!)
foo: console.log('foo');
8.5 continue 문
- 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다
let string = 'Hello world';
let search = 'l';
let count = 0;
for(let i = 0; i < string.length; i++) {
if(string[i] !== search) continue;
count++;
}
console.log(count);
const regexp = new RegExp(search, 'g');
console.log(string.match(regexp).length);