조건문의 종류에는 if와 swith 두 종류가 있는데 오늘 배운 내용은 if문에 관한 내용만 배웠기에 if문을 먼저 알아보겠다.
javascript의 if문은 if( 조건식 ) 영역이 참이면, { } 코드 블록 사이의 실행문을 1회 실행한다. if ( 조건식 ) 영역이 거짓이면, if문을 탈출한다.
<script>
if ( 조건식 )
{
실행문 A; //조건식이 참이면 실행
}
...
</script>
else {} 코드 블록에는 if ( 조건식 )이 거짓일 경우 실행될 코드를 입력한다.
<script>
if ( 조건식 )
{
실행문 A; //조건식이 참일 경우 실행
}
else
{
실행문 B; //조건식이 거짓일 경우 실행
}
</script>
두 개 이상의 조건식을 사용하고 싶을 때 사용할 수 있는 조건문. if, else if, else의 세 가지 형태의 명령어를 모두 사용한다.
<script>
if ( 조건식 A )
{
실행문 a; //조건식 A가 참일 때 실행
}
else if ( 조건식 B )
{
실행문 b; //조건식 A가 거짓, 조건식 B가 참일 때 실행
}
else
{
실행문 c; //조건식 A와 B가 모두 거짓일 때 실행
}
</script>
반복문은 동일한 코드를 반복해야되는 경우에 작성하면 좋은 문법이다.
반복문의 문법은 다음과 같이 쓴다.
while (condition) {
// 코드
// '반복문 본문(body)'이라 불림
}
condition(조건)이 truthy 이면 반복문 본문의 코드가 실행된다.
만약 i<3을 만족할 동안 i가 1씩 커지는 값을 출력하고 싶을때는
let i = 0;
while (i < 3) { // 0, 1, 2가 출력됩니다.
alert( i );
i++;
}
이렇게 표현 해 주면 된다.
반복문 본문이 한 번 실행되는 것을 반복(iteration, 이터레이션) 이라고 부른다. 위 예시에선 반복문이 세 번의 이터레이션을 만든다.
do..while 문법을 사용하면 condition을 반복문 본문 아래로 옮길 수 있습다.
do {
// 반복문 본문
} while (condition);
이때 본문이 먼저 실행되고, 조건을 확인한 후 조건이 truthy인 동안엔 본문이 계속 실행된다.
for반복문의 문법은 다음과 같다.
for (begin; condition; step) {
// ... 반복문 본문 ...
}
예시로
for (let i = 0; i < 3; i++) { // 0, 1, 2가 출력됩니다.
alert(i);
}
0, 1, 2 숫자가 하나씩 나오는 alert가 나오는 코드는
// for (let i = 0; i < 3; i++) alert(i)
// begin을 실행함
let i = 0
// condition이 truthy이면 → body를 실행한 후, step을 실행함
if (i < 3) { alert(i); i++ }
// condition이 truthy이면 → body를 실행한 후, step을 실행함
if (i < 3) { alert(i); i++ }
// condition이 truthy이면 → body를 실행한 후, step을 실행함
if (i < 3) { alert(i); i++ }
// i == 3이므로 반복문 종료
이런 과정을 거쳐서 반복해준다.
지금까지 학습한 내용에서는 변수 할당시 어떤값이라도 들어가는것으로 알고 있었다.
학습도중
if(0 <= hour && hour < 24 && 0 <= minute && minute < 60 && 0 <= second && second < 60){
return `1초 뒤에 ${hour}시 ${minute}분 ${second + 1}초 입니다`
}
이런 코드를 짜게 됬는데 if의 조건식이 너무 길어져 가독성도 떨어지고 그 뒤에 나올 코드들을 짜는것도 불편한 상황이었다. 그래서 변수을 선언해 할당해 사용하려고했는데 처음에는 funtion 에 있는 파라미터를 사용해 변수 선언을 해서 잘 안된것 같았다. 여러가지 검색을 했어도 원하는 답을 찾을 수 없었고 여러 실험 결과 변수 선언을 잘 못 한것 같았다.
let h = 0 <= hour && hour < 24;
let m = 0 <= minute && minute < 60;
let s = 0 <= second && second < 60;
if(h && m && s){
return `1초 뒤에 ${hour}시 ${minute}분 ${second + 1}초 입니다`
}