
let animal = 'dog';
if (animal === 'dog') {
console.log('🐕');
} else if (animal === 'cat') {
console.log('🐈');
} else {
console.log('🌸');
}

조건식 ? 표현식1(true일 경우 실행) : 표현식2(false일 경우 실행);
let animal = 'dog';
animal === 'dog'? console.log('🐕') : console.log('🐈');

num의 숫자가 짝수이면 👍🏻, 홀수이면 👎🏻 출력
1. 조건문
2. 삼항연산자
let num = 2;
if(num % 2 === 0){ //숫자를 2로 나눴을 때 나머지가 0 이면 짝수
console.log('👍');
} else {
console.log('👎');
}
num % 2 === 0 ? console.log('👍') : console.log('👎');
//위의 식을 더 간편하게
let emoji = num % 2 === 0 ? '👍' : '👎';
console.log(emoji);

if~else를 여러번 쓰지 않고도 두개 이상의 조건에서 동작을 실행시킬 수 있다.
❗️주의 : break를 꼭 걸어줄 것 (아래 예시 참고)
let newJeans = 3;
let memberName;
if(newJeans === 0){
memberName = '하니';
} else if(newJeans === 1) {
memberName = '해린';
} else if(newJeans === 2) {
memberName = '민지';
} else if(newJeans === 3) {
memberName = '다니엘';
} else if(newJeans === 4) {
memberName = '혜인';
}
//if문을 switch 문으로 바꾸면
switch(newJeans) {
case 0 :
memberName = '하니';
break;
case 1 :
memberName = '해린';
break;
case 2 :
memberName = '민지';
break;
case 3 :
memberName = '다니엘';
break;
case 4 :
memberName = '혜인';
break; //break를 사용하지 않으면 콘솔에 memberName을 찍었을 때 맨 마지막 결과가 출력됨
default:
console.log('뉴진스는 5명!'); //newJeans라는 변수의 값이 4를 초과했을 경우 출력되는 값
}
//let newJeans = 3 에 대한 멤버 이름 결과
console.log(memberName);

break를 조건마다 쓰지 않는 경우: 두개 이상의 조건에서 한 동작을 실행할 때
let adjective = 'cute';
let text;
switch (adjective) {
case 'cute':
case 'pretty': //adjective에 cute나 pretty라는 값이 있으면 콘솔에 '칭찬'을 출력
text = '칭찬';
break; // 같은 동작을 실행하는 조건에서는 break 한번만 쓰기!
case 'ugly': //adjective에 ugly라는 값이 있으면 콘솔에 '욕'을 출력
text = '욕';
break;
}
console.log(text);

조건식의 값이 참이면 {} 코드 블럭을 실행
조건식이 거짓이 될 때까지 조건식; 증감식; 반복
for(let i = 0; i < 5; i++){
console.log(i); // 0 1 2 3 4를 출력. i는 5보다 작아야 하기 때문에.
}

for문 안에 for문을 중첩 사용할 수 있다.
for(let i = 0; i < 5; i++){
for(let j = 0; j < 5; j++){
console.log(i, j);
}
}
i가 0일 때 중첩된 for문이 반복 실행되면서 j 증가,
4가 될때까지 그 과정이 반복된다.
❗️for문의 조건식은 언젠가는 거짓이 되어 증감을 멈춰야 한다. 무한루프 되지 않도록 주의.

⏭️ continue: 조건이 맞으면 다음으로 넘어가
⏹️ break: 조건이 맞으면 그만해
for(let i = 0; i < 15; i++){
if(i === 10){
console.log('i가 드디어 10이 되었다!');
continue;
break;
}
console.log(i);
}
continue를 쓰면 아래에 있는 코드는 무시되고 다음 for문을 돌린다.

for(let i = 0; i < 15; i++){
if(i === 10){
console.log('i가 드디어 10이 되었다!');
break;
}
console.log(i);
}
continue를 쓰지 않으면 if문이 true가 될때까지만 실행하고 멈추는 것을 볼 수 있다.

조건이 맞으면 계속해서 코드블럭 반복 실행.
for문과 비슷하며 무한 루프를 방지하도록 break 사용.
while문 안에서도 if문 사용 가능.
let num = 5;
//num이 0과 크거나 같을 때까지 감소 실행
while(num >= 0){
console.log(num);
num--;
}

조건이 맞을 때에만 실행하고 싶다면 while을,
꼭 한번은 실행해야 한다면 do while 실행
let isActive = true;
let i = 0;
while(isActive){
console.log('while문은 조건이 맞을 때까지 실행되는 반복문');
if(i === 5) {
break;
}
i++;
}
i가 0부터 5가 될 때 까지, 총 6번 콘솔이 찍혔음을 알 수 있다.

let isActive = false; //do while문을 실험해보기 위해 값을 false로 바꿨다.
let i = 0;
while(isActive){
console.log('do while은 반드시 최초 한번은 실행됨');
if(i === 5) {
break;
}
i++;
}
do {
console.log('do while은 반드시 최초 한번은 실행됨');
} while (isActive);
변수 isActive가 false기 때문에 while문에서는 실행되지 않고,
do while문에서만 do{} 안의 콘솔이 최초로 한번 찍히고 while()을 검증했으나 거짓이기 때문에
더는 실행하지 않은 것을 알 수 있다.

&& 그리고 (둘다 true여야 출력)
|| 또는 (둘중에 하나만 true여도 출력)
! 부정
!! 불리언값으로 변환
let num = 3;
// num이 0보다 크고 5보다 작다
if(num > 0 && num < 5) {
console.log('🍟');
}
// num이 0보다 크거나 5보다 크다. 둘중에 하나만 true가 되어도 실행
if(num > 0 || num > 5) {
console.log('🍔');
}
// num이 7이 아니면 실행
if(num != 7) {
console.log('🍕');
}

셋 다 true 여서 콘솔이 찍혔다.