[JS기초] 제어문

devJisun·2023년 11월 1일

if문 (조건문 if, else if, else)

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);

switch문(조건문)

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문(반복문)

(변수선언문; 조건식; 증감식){}

조건식의 값이 참이면 {} 코드 블럭을 실행
조건식이 거짓이 될 때까지 조건식; 증감식; 반복

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.


⏭️ 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가 될때까지만 실행하고 멈추는 것을 볼 수 있다.

while문(반복문)

조건이 맞으면 계속해서 코드블럭 반복 실행.
for문과 비슷하며 무한 루프를 방지하도록 break 사용.
while문 안에서도 if문 사용 가능.

let num = 5;
//num이 0과 크거나 같을 때까지 감소 실행
while(num >= 0){ 
	console.log(num);
    num--;
}

while{} 과 do{} while()

조건이 맞을 때에만 실행하고 싶다면 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()을 검증했으나 거짓이기 때문에
더는 실행하지 않은 것을 알 수 있다.

논리연산자 (Logical operator)

&& 그리고 (둘다 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 여서 콘솔이 찍혔다.

profile
console.log('실력과 거북목은 비례할까?'); 👩🏻‍💻 FrontEnd

0개의 댓글