조건문
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의 배수 아님');
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);
let n = 5;
switch (n){
default:
console.log(n);
}
switch (n % 5){
case 0: {
console.log('5의 배수이다');
break;
}
default:
console.log(n);
}
n = 6
switch (n % 5){
case 0: {
console.log('5의 배수이다');
break;
}
case 1:
case 2:
case 3:
case 4:
console.log('5의 배수가 아니다')
default:
console.log(n);
}
반복문
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);
}
- break 반복문 즉시 종료
- continue 해당 코드 블럭 종료, 다음 반복으로 넘어감
- 무한루프
for(;;){
d
}
for (;;){
console.log('안녕하세요');
if (Math.random() * 100 > 90){
break;
}
}
while
- while(조건){조건이 거짓이 될 때까지 반복 실행}
while (true){
console.log('안녕하세요');
if (Math.random() * 100 > 90){
break;
}
}
- do{
조건이 거짓이 될 때까지 반복 실행
} while (조건);
- 차이점: 맨처음 한번 실행된 다음부터 조건이 적용된다
do{
console.log('hi');
} while (Math.random() * 100 > 90);
for of & for in
for (const i of [1, 2, 3]){
console.log(i);}
Object.prototype.test = function(){};
for (const i in {a: 1, b: 2, c: 3}){
console.log(i);}