TIL(2022.05.20)-[JS] 조건문 & 반복문

박세진·2022년 5월 29일
0

조건문

if...else

let name = 'sejin';

if (name === 'sejin') {
  console.log(`I'm ${name}.`);
} else if (name === 'sujin') {
  console.log(`I'm not sejin, I'm ${name}.`)
} else {
  console.log('Who are you?');
}
// 콘솔에 출력 : I'm sejin.

name = 'sujin';
if (name === 'sejin') {
  console.log(`I'm ${name}`);
} else if (name === 'sujin') {
  console.log(`I'm not sejin, I'm ${name}.`)
} else {
  console.log('Who are you?');
}
// 콘솔에 출력 : I'm not sejin, I'm sujin.
// 함수의 인자가 아들인 경우 'No!'를 출력
// 함수의 인자가 아빠인 경우 'It's Okay!'를 출력
// 함수의 인자가 할아버지인 경우 'Be careful~'를 출력
// 그 외에는 'Who are you'를 출력

function isOkayToDrive (who) {
  if (who === 'son') {
    console.log('No!');
  } else if (who === 'Dad') {
    console.log('It\'s Okay!');
  } else if (who === 'Grand father') {
    console.log('Be careful~')
  } else {
    console.log('Who are you?');
  }
}

isOkayToDrive('son'); // 'No!'
isOkayToDrive('Dad'); // "It's Okay!"
isOkayToDrive('Grand father'); 'Be careful~'
isOkayToDrive('sejin') 'Who are you'
  • if, else 에 중첩을 시킬 수도 있다.
let num1 = 10;
let num2 = 8;
let num3 = 9;

if (num1 > num2) {
  if (num1 > num3) {
    console.log(`num1이 가장 크다.`)
  } else {
    console.log(`num1은 num2보다는 크지만 num3 보다는 작습니다.`)
  }
}

switch문

  • case가 한정적일 때 사용하면 if...else 구문보다 간결하게 사용이 가능하다.
  • 값으로 평가할 수 있는 것들을 표현식이라고 한다.
  • break문이 필요하다. break문을 사용하지 않으면 case를 만족하더라도 그 다음 case가 실행되기 때문에 꼭 break문을 case가 끝날 때 넣어줘야 된다.
  • default문은 없어도 괜찮다. if 조건문에서 else문이 없어도 되는 것과 같다.
switch(표현식) {
	case 표현식 : 실행문1 (문장 여러 개)
    break;
	case 표현식 : 실행문2 (문장 여러 개)
    break;
    default : 실행문
}
// 위에 있는 if...else 구문을 switch문으로 바꿔보았다.
let who = 'Dad';
function isOkayToDrive (who) {
switch(who) {
  case 'son': console.log('No!');
    break;
  case 'Dad': console.log('It\'s Okay');
    break;
  case 'Grand father': console.log('Be careful~');
    break;
  default: console.log('Who are you?');
}}

isOkayToDrive('son'); // 'No!'
isOkayToDrive('Dad'); // "It's Okay"
isOkayToDrive('Grand father'); // 'Be careful~'
  • 모던 자바스크립트 입문 책에 있는 예제를 따라해보았다.
function binaryOperation(a, b, operator) { 
switch(operator) {
  case '+': return a + b;
    break;
  case '-': return a - b;
    break;
  case '/': return a / b;
    break;
  case '*': return a * b;
    break;
  case '%': return a % b;
    break;
  default: return NaN;
}}

binaryOperation(10, 4, '+'); // 14
binaryOperation(10, 4, '-'); // 6
binaryOperation(10, 4, '/'); // 2.5
binaryOperation(10, 4, '*'); // 40
binaryOperation(10, 4, '%'); // 2

반복문

while

  • 조건식을 평가해서 false인 경우 while문을 빠져 나오고, true인 경우에는 문장을 실행하고 while문으로 다시 돌아가서 조건식을 평가한다.
while(조건식) {
	문장
    증감연산자
}
function fact(n) {
  let k = 1;
  let i = 1;
  while (i < n) {
    k += (++i);
  }
  return k;
}

fact(4);
console.log(fact(5)); // 15
let i = 1;
while (i <= 50) {
  if (i % 2 === 0 && i % 7 === 0) {
    console.log(i)
  }
  i++;
}


function linearSearch(x, a) {
  let i = 0;
  let n = a.length;
  while (i < n && x > a[i]) {
    i++;
  }
  if (x == a[i]) {
    return i;
  }
  return null;
}

let a = [2, 4, 7, 12, 15, 21, 34, 35, 46, 57, 70, 82, 86, 92, 99];
console.log(linearSearch(35, a)); // 7

do/while문

  • 입력한 값이 조건에 없을 경우에도 초기값을 주고 싶은 경우에 사용한다.
  • do...while문은 조건에 상관없이 무조건 한번은 실행되게 되어 있다.
  • do / while문 끝에는 반드시 세미콜론이 붙ㄴ어야 된다.
function fact(n) {
  let k = 0;
  let i = n;
  do {
    k += i--;
  } while (i > 0) {
    return k;
  }
}

console.log(fact(5)); // 15
let i = 15;
do {
  console.log(i);
  i++
} while (i <= 10) {
  console.log(i);
}

// 이 경우에는 while 조건문에 맞지 않기 때문에 do구문에 의해서 무조건 한번 출력되고 종료된다.

for

for (초기화식; 조건식; 증감식) {
	실행문
} 
// 구구단 2,3,4단 만드는 for 반복문
for (let dan = 2; dan < 5; dan++) {
	console.log(`${dan}단입니다.`);
  for (let i = 1; i < 10; i++) {
  		console.log(`${i} * {dan} = ${i * dan}`);
  }
}
// 
function sumArray(a) {
  let sum = 0;
  for (let i=0; i < a.length; i++) {
    sum += a[i];
  }
  console.log(sum);
}

let a = [3, 5, 1, 2, 6, 7];
sumArray(a); // 24

점프문

break

  • breka문은 switch문과 반복문 안에서만 사용할 수 있다.
  • break는 반복문이나 switch문에서 빠져나온다.
for (let dan = 2; dan < 5; dan ++) {
  if (dan === 3) {
    break;
  }
  console.log(`${dan}단입니다.`);
  for (let i = 1; i < 10; i++) {
    console.log(`\t${i}x${dan} = ${i * dan}`);
  }
}
// 2단까지만 출력이 되고 종료. 3단은 나오지 않음. 

continue

  • continue문은 반복문 안에서만 사용할 수 있다.
  • continue의 경우 잠깐 멈췄다가 다시 실행을 한다.
for (let dan = 2; dan < 5; dan ++) {
  if (dan === 3) {
    continue;
  }
  console.log(`${dan}단입니다.`);
  for (let i = 1; i < 10; i++) {
    console.log(`\t${i}x${dan} = ${i * dan}`);
  }
}
// 3단에서 잠깐 멈췄다가 4단부터 다시 실행한다.
profile
경험한 것을 기록

0개의 댓글