[개발일지 25일차] JavaScript 제어문(조건문과 반복문)

MSJ·2022년 6월 8일
0

WEB

목록 보기
25/41
post-thumbnail

2022-06-08

자료형에는 문자열, 숫자, 불린형이 있다.

문자열과 식별자

식별자와 문자열 구분에는 , 문자열은 따옴표를 넣는다는 것.
"this is "string"" >오류, 따옴표 중복.

그렇다면 이 따옴표 묶음을 어떻게 할까. 바로 다른 따옴표를 써서 묶으면 된다.
'this is "string"'
그러나 이것 말고도 다른 방법이 있는데,
'this is \'tring\'' 콘솔 결과->"this is 'string'"
\' 이스케이프 문자라고 한자.

'this is \n string'

\n 개행 문자 new line character. 다음 줄로 넘어간다. 사용 많이 됨.

'this is \t string'
\t tab 탭을 보여준다. 정해진 탭만큼 칸을 띄운다.

"this is\\ string"

숫자는 왜 따로 구분이 없나. 식별자에 이미 숫자로 시작하지 못한다는 조건을 붙였기 때문에 숫자가 오면 자연스럽게 number이 된다

문자열

"안녕"+"하세요"
-> '안녕 하세요'

"안녕하세요"[0]
-> '안'

"안녕하세요"[1]
-> '녕'

"안녕하세요".length //글자의 길이
-> 5

length는 글자의 길이를 의미하지만 index를 사용할 때는 숫자 카운트가 0부터 시작하기 때문에 length 같은 구문을 쓸때는 -1을 해서 계산을 생각해줘야한다.

% 나머지를 구할 때. 홀수, 짝수, 배수를 찾을 때 씀

Boolean(불린형)

bool 이라고도 부름
true 와 false. 참과 거짓. 두 가지 유형 밖에 없다.

Boolean 연산

== 값이 같다
=== 값이 같고, 자료유형도 같다
1==1 -> true
1==="1" -> false


1<=2 부등식과 쓸 때는 하나씩만 쓴다


!true -> false
! 는 not이라고 부른다. 연산의 값, 조건을 뒤집을 때 씀.
10===10 -> true
!(10===10) -> false
"kk".length >= 5 -> false
!("kk".length >= 5) -> true


&& and 그리고, 닫힌 범위
|| or 또는, 열린 범위
하나씩만 쓰면 비트 연산자가 된다.

'는 3초과이거나 5이하이다' 에서
3 < x <= 5 라고 쓰면 오류가 난다. (파이썬은 ok)
3 > x || x <=5 라고 따로 써야 OK. 하나씩 처리하기 때문.


상수

1) 항상 같은 수. 한 번 값을 정하면 절대 바꿀 수 없다.

2) 상수는 선언을 한다고 칭함.
const name ="값"
const가 상수를 선언하는 키워드, name은 식별자, ""는 값

3) 상수는 선언을 할 때, 값을 바로 정해주어야 한다. 나중에 쥐어줄 수 없음.

4) 상수는 중복 선언하면 에러가 난다.

5) 연산자가 없다. 값을 변경 못하니까.

상수의 오류

Identifier has already declared : 중복 선언

const width ->Uncaught SyntaxError : Missing initializer in const declaration : 신택스(구문) 에러. 값을 초기화해주지 않았다. 값을 할당해주지 않았다.
Uncaugh(잡히지 않은), SyntaxError(구문 오류) : initializer(초기화), declaration(선언문)

Uncaught TypeError: Assignment to constant variable. : 변할 수 없는 값(상수)을 변경하려 했다. 그건 불가하다.
Uncaught(잡히지 않은) TypeError(유형 오류) : Assigment(배정, 배치) constant(변함없는, 상수) variable(변수)


변수

변경될 수 있는 값.
var i let i
요즘에는 let i를 자주 쓰는데,
이미 사용한 같은 변수가 있는지 구분을 해준다. 있다면 에러가 남
var이면 중벽 변수도 바로 덮어지게 된다.

연산자가 있다. 변해야 하니까.

복합 연산자

+=, -=, *=, /=, %= ...

j = 50 로 주어질 때,
j = j + 1j += 1 는 둘다 51로, 같은 의미다.

증감 연산자

a++, a-- : 후위 방식, 연산이 나중에 진행된다
++a, --a : 전위 방식, 연산이 먼저 진행된다


조건문

조건문의 기본 양식

if(조건식1) {
실행문1
실행문2
실행문3
}

실행문이 항상 실행되는 것은 아니고 이 조건식이 true일 경우 실행된다

예시1

예시2

12시 전일 때는 오전입니다 알림이 나오고 12시 이후부터는 오후 알림이 뜬다

그렇다면 아래처럼 문자 안에 값을 넣는 건 어떻게 할까?

백틱 사이에 ${ } 를 이용하면 된다. 변수 hours을 감싸기.

옛날에는 문자열 연산으로 일일이 썼다고 한다...
'문자' + 변수 + '문자'


중첩 조건문

예시1

만약 시간이 11시 전이라면(조건문1), 아침 시간 알림이 뜨고(실행문1).
그게 아니라면(else) 시간이 17시보다 작거나 같을 때(조건문2), 점심 시간 알림(실행문2)이 뜨거나 17시보다 크면 저녁 시간 알람이 뜬다.

else와 if는 else if와 같이 붙여쓸 수 있다.

예시2

Swith Case 문

스위치 조건문

switch (값) {
case 조건1
실행문1
case 조건2
실행문2
case 조건3
}

여기서 바로 변수 1를 넣어 실행하면, case 1 의 실행문 1 만 실행이 되어야하는데, 2도 실행이 되고 3도 실행이 된다.
2 를 넣으면, 2도 실행되고 3 도 실행된다. 순차적으로.. 3 을 넣으면 3 이 실행되고.

if문은 따로 종료를 시키지 않아도 중괄호에 묶여 해당되는 것만 실행되고 조건문 밖으로 빠져나온다.

그래서 훼이크가 필요하다.

 <script>
let a = prompt("숫자를 입력하세요")
        switch (a) {
            case 1
            실행문1
            break;
            
            case 2
            실행문2
            break;
            
            case 3
            실행문3
            break;
            
            default:  //if문의 else와 같은 역할. 나머지 값이 들어올 경우 실행문4
            실행문4
            break;
}
 </script>

예시1

 <script>
 //const는 값을 변경하고 싶지 않기 때문에 쓴거지만 필요하다면 변수로 선언(let)해도 됨. 
        const ivalue = Number(prompt("숫자를 입력하세요", "0~3"))
        //prompt는 문자형이기 때문에 숫자형으로 바꿔주기 위해 Number사용
        switch(ivalue) {
        case 0:
            alert("0 입니다.")
            break;

        case 1:
        alert("1 입니다.")
        break;   
        
        case 2:
        alert("2 입니다.")
        break;
        
        case 3:
        alert("3 입니다.")
        break; 
        }
 </script>

예시2

 <script>
        const ivalue = Number(prompt("숫자를 입력하세요", "0~100"))
        switch(ivalue%2) {
        case 0:
            alert("짝수입니다.")
            break;

        case 1:
        alert("홀수입니다.")
        break;   
        
        default:
        alert("숫자가 아닙니다. 다시 확인해보세요.")
        break;
        }
</script>

switch(ivalue%2) <-이 부분에 조건을 건다...
case에 값이 들어온다

이런 예시의 경우에는 차라리 if문으로 쓰고,
명시적으로 딱 떨어지는 값이 있을 때 case문을 자주 쓴다.
범위 설정이 힘들기 때문

삼항 연산자

조건문?실행문1:실행문2 이부분이 삼항 연산자

let a = prompt
조건문?실행문1:실행문2
(a>10)?("a는 1보다 크다"):("a는 10보다 작다")

예시

삼항 연산자를 result에 넣어서 alert으로 결과를 띄운 것

<script>
 const ivalue = prompt("숫자입력")
        const num = Number(ivalue)
        const result = (num >= 0)?'0 이상의 숫자':'0 보다 작은 숫자'
        alert(result)
</script>

어려운 점

개행 문자가 뭐지? 조건문이 뭐지? 모든 개념이 생소하다

해결 방법

개발일지 쓰면서 복습 하니 한 번 들은 것보다는... 그나마 알겠다
개행 문자는 new line character의 약어로, 인자 또는 표시의 위치를 다음 행 최초의 위치로 이동시키는 서식 제어 문자라고 한다.... what?
아무튼 다음 행으로 엔터쳐주는 느낌이다

조건문
주어진 조건이 참이냐 거짓이냐에 따라 다른 명령을 처리하도록 만든 수행문

소감

갑자기 어려워지는 느낌이다... @_@

profile
제로부터 시작하는 프로그래밍&코딩

0개의 댓글