3. 조건문과 반복문
1) Scope
✔ Scope란?
변수 혹은 상수에 접근할 수 있는 범위
- 모듈, 함수 내 코드에서 동일한 변수 사용 시 간섭을 줄이는 용도로 사용
- Scope는 Global Scope(전역 변수)와 Local Scope(지역 변수)로 구분
- Global Scope : 전역에 선언되어 어디에서도 접근 가능
- Local Scope?(block, function level scope) : 특정 지역에 선언되어, 해당 지역 내에서만 접근 가능
2) 조건문
✔ 조건문 : if-else
알고리즘에서 논리적 비교를 할 때 사용되는 조건식
- if, if else, else 키워드를 통해 구성됨
- 조건식에 맞을 경우 중괄호 {} 내에 있는 명령문을 수행
- 단, 실행 문장이 단일문장 인 경우 {} 생략 가능
const number = 5;
if (number > 0) {
// code
} else {
// code
}
// code after if...else
✔ 조건문 : 3항 연산자
3항 연산자를 통해 if-else를 대체하여 사용 가능
- 변수 = (조건식) ? 참일 때 값 : 거짓일 때 값
- 코드 가독성을 위해 남발 자제!
const age = 20;
if (age < 19) {
msg = "성인이 아닙니다.";
} else {
msg = "성인입니다.";
}
console.log(msg); // 성인입니다.
// 조건문 3항 연산자
msg_another = age < 19 ? "성인이 아닙니다." : "성인입니다.";
console.log(msg_aother); // 성인입니다.
✔ 조건문 : switch
표현식을 평가하여 그 값이 일치하는 case문을 실행하는 조건문
- switch, case, break, default 키워드를 통해 구성되며 조건에 맞는 case 구문을 수행
- 일반적으로 하나의 case만 수행되도록 case 끝을 break으로 끝맺음
switch (ch) { case 1: statements; break; case 2: statements; break; case 3: statements; break; }
3) 반복문
✔ 반복문 : for
조건문이 fail되기 전까지 코드 블록을 반복 수행
- 선언문(Init Expression), 조건문(Test Expression), 증감문(Update Expression) 형태로 이루어짐
- 선언문, 조건문, 증감문 자리에 공백 입력 가능
for (Init Expression; Test Expression; Update Expression) {
// statement block...
}
✔ 반복문 : for(확장)
for (key in object) {
// code block...
}
- for...in 반복문
- 객체의 key, value 형태를 반복하여 수행하는데 최적화
- 첫 번째부터 마지막까지 객체의 키 개수만큼 반복
for (variable of iterable) {
// code block...
}
- for...of 반복문
- Collection 객체 자체가 Symbol.iterator 속성(property)을 가지고 있어야 동작 가능
- ES6에 새로 추가된 Collection 기반 반복 구문
✔ 반복문 : while
조건문이 참일 때 코드 블록을 계쏙해서 반복 수행하는 반복문
- for문에 비해 선언문과 증감문 없이 loop를 수행하며 무한 loop 등을 수행 시 많이 사용
- 조건문을 코드 블록보다 아래로 옮긴 do...while 반복문도 존재(최소 한 번 수행이 필요할 때)
// while while (Test Expression) { // statement block... } // do...while do { // statement block... } while (Test Expression);
✔ 반복문 제어
// break
let text = "";
for (let i = 0; i < 10; i++) {
if (i === 3) break;
text = text + i;
}
console.log(text); // 012
- break
- 반복문 수행 시 코드 블록을 탈출할 때 사용되는 식별자
- 다중 반복문일 경우 가장 안쪽의 반복문을 종료
- Label을 통해 다중 반복문을 한 번에 종료 가능
- Label : 반복문 앞에 콜론과 함께 쓰이는 식별자
// continue
text = "";
for (let i = 0; i < 10; i++) {
if (i === 3) continue;
text = text + i;
}
console.log(text); // "0123456789"
- continue
- 반복문 수행 시 코드 블록 실행을 해당 라인에서 중지함
- 블록 코드를 종료 시킨 후 반복문 내 명시된 조건 판단
// label
end: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
console.log(i + "*" + j + "=" + i * j);
break end;
}
} // 0 * 0 = 0
- label
- 프로그램 내 특정 영역을 지정하여 별도 이름을 붙이는 식별자
- break와 continue를 사용하는 반복문 안에서만 사용 가능
- break나 continue 지시자 위에 있어야 함