TIL no.9

손병진·2020년 7월 21일
0

TIL

목록 보기
9/22

조건문

if

  • 표현식이 참으로 평가될때, 실행되는 블럭
if (true){
	console.log('항상 실행');
}
if (false){
	console.log('항상 실행되지 않음');
}
if (true) console.log('항상 실행');
//블록에 코드가 한줄이면, 중괄호{} 생략 가능

  • 표현식이 거짓으로 평가될 때
    : false, 0, null, undefined, NaN
  • 표현식이 참으로 평가될 때
    : true, 숫자, 문자, {}, []
if (false) console.log(false);
if (0) console.log(false);
if ('') console.log('');
if (null) console.log(null);
if (undefined) console.log(undefined);
if (NaN) console.log(NaN);
// 전부 출력 안됨

if (true) console.log(true);
if (37) console.log(37);
if (-37) console.log(-37);
if ('Mark') console.log('Mark');
if ({}) console.log({});
if ([]) console.log([]);
// 전부 출력됨

else

const n = 37;

if (n > 0){
	console.log('n 이 0 보다 큰 경우');
} else{
	console.log('n 이 0 보다 크지 않은 경우');
}

if (n > 0) console.log('n 이 0 보다 큰 경우');
else console.log('n 이 0 보다 크지 않은 경우');
// 블록 안 문장이 하나일 경우, 중괄호 없이 사용 가능

else if{}

const n = 15;

if (n % 3 === 0) console.log('n은 3의 배수');
else if (n % 5 === 0) console.log('n은 5의 배수');
else console.log('n은 3,5의 배수 아님');
// 3의 배수, 5의 배수 둘다 만족한다면? -> 앞선 조건식을 출력
// 그래서 범위가 좁은 조건을 먼저 두는 경향이 있음
if (n % 3 == 0 && n % 5 === 0) console.log('n은 15의 배수');
else if (n % 3 === 0) console.log('n은 3의 배수');
else if (n % 5 === 0) console.log('n은 5의 배수');
else console.log('n은 3,5,15의 배수 아님');

  • 변수나 상수 활용하여 조건문 가능
const multipleofThree = n % 3 === 0;
const multipleofFive = n % 3 === 0;

if (multipleofThree && multipleofFive) console.log('n은 15의 배수');
else if (multipleofThree) console.log('n은 3의 배수');
else if (multipleofFive) console.log('n은 5의 배수');
else console.log('n은 3,5,15의 배수 아님');

  • 중첩을 이용해서 표현 가능
if (multipleofThree && multipleofFive) {
  console.log('n은 15의 배수');
} else {
  if (n % 3 === 0) console.log('n은 3의 배수');
  else if (n % 5 === 0) console.log('n은 5의 배수');
  else console.log('n은 3,5의 배수 아님');
}

논리연산자

// &&
if (true && true) console.log('두개 모두 참이면 참');
if (true && false) console.log('한개만 참이면 거짓');
if (false && false) console.log('두개 모두 거짓이면 거짓');

// ||
if (true || true) console.log('두개 모두 참이면 참');
if (true || false) console.log('한개만 참이면 참');
if (false || false) console.log('두개 모두 거짓이면 거짓');

// !
if (!true) console.log('거짓')
if (!false) console.log('참')

  • 논리 연산자를 이용한 조건부 실행
  • && 앞 표현식에서 참일 때, 뒤 표현식 평가할 필요가 생긴다
  • || 앞 표현식에서 참일 때, 뒤 표현식 평가할 필요가 없어진다
let n = 5;
(n % 5 === 0) && console.log('5로 나누어질때만 실행됨'); // 출력됨

n = 7;
(n % 5 === 0) && console.log('5로 나누어질때만 실행됨'); // 출력 안됨
// 앞선 표현식이 참일 때만 && 뒤 표현식이 실행된다

n = 5;
(n % 5 === 0) || console.log('5로 나누어지지 않을때만 실행됨'); // 출력 안됨

n = 7;
(n % 5 === 0) || console.log('5로 나누어지지 않을때만 실행됨'); // 출력
// 앞선 표현식이 거짓일 때만 || 뒤 표현식이 실행된다

삼항 연산자

  • 조건 ? 조건이 참일때 표현식 : 조건이 거짓일때 표현식
let n = 5;
console.log(n % 5 === 0 ? '5의 배수이다' : '5의 배수가 아니다');

const message = n % 5 === 0 ? '5의 배수이다' : '5의 배수가 아니다';
console.log(message);
// 표현식 결과를 변수에 할당할 수 있다
  • switch
let n = 5;
switch (n){ // 중괄호 안에 있는 코드를 비교
  default: // default 키워드 뒷문장은 항상 참으로 실행된다
    console.log(n); // 중괄호 생략
}

switch (n % 5){ // 조건 식
  case 0: { // 조건 값
  	console.log('5의 배수이다');
    break; // 해당 case 일때 이하 코드가 실행되지 않도록
  }
  default: 
    console.log(n); // 출력 안됨
}

n = 6

switch (n % 5){ 
  case 0: { 
  	console.log('5의 배수이다');
    break; 
  }
  case 1:
  case 2:
  case 3:
  case 4: // 5의 배수가 아닐때 조건을 나열
    console.log('5의 배수가 아니다')// 출력됨
  default: 
    console.log(n); // 6 출력
}

반복문

for

  • for(초기화; 반복조건; 반복이 된 후 실행되는 코드){
    반복이 되는 코드 블럭}
  • for(a,b,c){
    d
    }
    e
    : a -> d -> c -> b -> d -> c -> b -> e
for(let i = 0; i < 5; i++5){
	console.log('hi', i);
//  if (i < 2){
//  	break;
//    continue;
//  }
}
  • break 반복문 즉시 종료
  • continue 해당 코드 블럭 종료, 다음 반복으로 넘어감

  • 무한루프
    for(;;){
    d
    }
for (;;){
	console.log('안녕하세요');
    if (Math.random() * 100 > 90){ // 랜덤한 값이 90이 넘으면 끝
    	break;
    }
}

while

  • while(조건){조건이 거짓이 될 때까지 반복 실행}
while (true){ // 무한루프
	console.log('안녕하세요');
    if (Math.random() * 100 > 90){ // 랜덤한 값이 90이 넘으면 끝
    	break;
    }
}

  • do{
    조건이 거짓이 될 때까지 반복 실행
    } while (조건);
  • 차이점: 맨처음 한번 실행된 다음부터 조건이 적용된다
do{
  console.log('hi');
} while (Math.random() * 100 > 90); // 위의 식을 바꿔 표현

for of & for in

  • iterable 객체
for (const i of [1, 2, 3]){ // for of
	console.log(i);} // 1 2 3 출력

Object.prototype.test = function(){};
for (const i in {a: 1, b: 2, c: 3}){ // for in
	console.log(i);} // a b c test 출력
profile
https://castie.tistory.com

0개의 댓글