제어문: 프로그램의 흐름을 바꾸는 역할을 하는 문장들로 조건문과 반복문이 있다.
조건문은 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍 하는 것이다.
boolean
: 참과 거짓을 판별할 때 사용되는 데이터타입.1 + 1 === 2 // true
1 + 1 !== 2 // false
if(name === 'Yejee' {
console.log('저는 Yejee입니다')
} else if (name === 'Jenny') {
console.log('저는 Yejee가 아닙니다. 저는 Jenny입니다')
} else {
console.log('저는 Yejee도 아니고, Jenny도 아닙니다')// else블럭은 생략 가능
}
===
, !==:
한 값이 다른 값과 같거나 다른지 판단.<
, >
: 한 값이 다른 값보다 작은지 큰지 판단.<=
, >=
: 한 값이 다른 값보다 작거나 같은지, 크거나 같은지 판단let score = 96;
let lecture = 'sports'
if ('sports' === lecture) {
if(score >= 70) {
console.log("점수: pass");
} else {
console.log("점수: fail");
}
} else {
if(score >= 90) {
console.log("점수: pass");
} else {
console.log("점수: fail")
}
}
논리연산자는 보통 boolean 값과 함께 사용해서 boolean 값을 반환한다.
&&
로 표현.||
로 표현.1+1 === 2 && 1+1 === 3 // false
1+1 === 2 || 1+1 === 3 // true (둘 중 하나가 참이기 때문)
false
, 0
, -0
, on
, “”
, null
, undefined
, NaN
let a = 0 // a는 0이기 때문에 falsy한 값
let b = 100 // b는 truthy한 값
if(a) {
console.log('I am falsy')
} else if(b) {
console.log('I am truthy')
}
// 'I am truthy' 출력.
이렇게 조건문 안에 연산자 대신 truthy한 값과 falsy한 값을 넣어서 식을 표현하는 것도 가능하다.
if ~ else문은 여러 개의 조건을 지정하기 위해 else if문을 계속 생성하며 코드가 길어지는 반면, switch문은 비교적 코드가 쉽고 간단하다.
모든 switch문은 if~ else문으로 변환이 가능하나, 모든 if의 문장을 switch문으로 바꿀 수는 없다. → if는 비교연산자를 통해 범위를 지정하는 조건식 작성이 가능하지만, switch문은 변수의 값 어떤 수치나 문자로 명시되는 경우로 분류되어 상대적 제약이 있기 때문이다.
switch문 안의 case에 해당 표현식이 있는지 훑어보고 일치하는 값이 있으면 그 레이블의 코드를 실행한다. break문은 switch문을 빠져나오는 역할을 한다.
let animal = 'Dog'
switch (animal) {
case 'Cat':
console.log('야옹');
break;
case 'Dog':
console.log('멍멍')
break;
case 'Cow':
console.log('음메')
break;
default: // if문의 else역할
console.log('일치하는 동물 소리가 없습니다');
break;
}
//'멍멍'