Pre-Js 3장 혼공스 정리

Noa·2022년 11월 8일
0

JS

목록 보기
10/13

3장 조건문

  • 조건분기 : 코드가 실행되는 흐름을 변경 하는 것

  • if 조건문 : 실행되는 문장이 1줄이면 중괄호 생략가능

  • getMonth() : 자바스크립트는 월을 0부터 센다
    0~11 사이의 값을 출력 -> +1 해서 사용

  • if else 조건문: 서로 반대되는 상황을 표현

  • 중첩 조건문 : 조건문 안에 조건문을 중첩해서 사용

  • if else if 조건문 : 겹치지 않는 3가지 이상의 조건으로 나눌 때 사용

    else if 구문을 사용할 때는 앞 단계에서 비교했던 것을 다음 단계에서 한 번 더 비교하고 있지는 않은지 확인해야함


  • 자바스크립트 입력시 prompt( ) 함수

    prompt( ) 함수 : 사용자에게 텍스트를 입력하라는 메세지를 띄워줌과 동시에, 입력 필드를 제공, 확인을 누르면 prompt 함수는 사용자가 입력한 문자열을 반환, 취소 또는 Esc 를 누르면 null을 반환. prompt(title, [default]) * default : 필수가 아닌 선택값

    prompt( ) 입력 함수의 단점은 모든 입력 데이터를 문자로 인식함.
    따라서 입력받은 숫자 데이터도 모두 문자형 숫자로 인식

  • Number( )함수

    Number( ) 함수는 문자 자료형을 숫자 자료형으로 변환시켜줌. prompt( )로 입력 받은 값을 Number( )에 한 번 돌려주면 데이터가 정수로 변환되어서 연산을 할 수 있음.

  • comfirm( ) 함수

    confirm( ) 함수 : 사용자가 확인 또는 취소 버튼을 누를 때까지 메시지가 창에 보여짐. 사용자가 확인 버튼을 누르면 true를, 취소 버튼이나 Esc 를 누르면 false를 반환.
    confirm(question(질문))


  • switch 조건문 : 특정 값의 조건을 비교할 때 사용
    사용자에게 값을 입력받을 때도 일반적으로 switch 조건문을 사용
    default : 키워드는 생략 할 수 있음
    break : switch 조건문이나 반복문을 빠져나가기 위한 키워드

    기본 형태
    
    swich (자료) {
        case 조건A:
          break
        case 조건B:
          break
        default:
         break
    }     
  • switch 조건문을 if 조건문으로 변환
    모든 switch 조건문은 if 조건문으로 바꿀 수 있음
    범위를 조건으로 가지는 if 조건문을 switch 조건문으로 대체 하기는 어려움 그러나 불가능 하지는 않음
    잘 사용하지는 않지만 switch (true)를 넣어서 범위를 조건으로 갖는
    if문을 switch 조건무능로 대체 할 수 있음

    const date = new Date()
    const hour = date.getHours()
    
    switch (true) {
        case hour < 11:
            alert('아침 먹을 시간입니다.')
            break
        case hour < 15:
            alert('점심 먹을 시간입니다.')
            break
        default:
            alert('저녁 먹을 시간입니다.')
            break
    }
  • 조건부 연산자
    삼항 연산자 : 조건 ? 참일 때 : 거짓 일때

  • 논리합 연산자를 사용한 짧은 조건문
    논리합 연산자를 사용한 표현식 뒤에 어떤 값이 들어가도 항상 참

    자바스크립트는 참이 확실 할때 추가 연산을 진행 하지 않는다
    true || console.log('실행될까요?')
    -> true
    false || console.log('실행될까요?')
    -> 실행될까요?

  • 논리곱 연산자를 사용한 짧은 조건문
    논리곱 연산자는 양변이 모두 참일 때만 참이다.

    과거에는 짧은 조건문을 이용한 할당이 많았음 -> 다른 조건문 코드와 비교했을 때 이해하기 어려워 짧은 조건문을 사용하지 말자는 개발자도 많음.

    컴퓨너는 모든 것을 숫자로 계산하므로 문자열 연산보다 숫자 연산이 훨씬 빠름

    컴퓨터에게 적합한 조건을 찾기 위해 다른 사람으 코드를 보면서 많이 경험하는 것이 좋음 -> 알고리즘과 자료구조를 공부하는 이유

책에서 어떤 코드를 사용하는 것이 더 효율적인지 알아보는 과정 중요하다고한다. 어떤 코드가 효율적이 코드일까?


  • '문자열A'.split('문자열B') 메소드는 문자열A를 문자열B로 잘라서 배열을 만들어내는 메소드.

  • p156 연습문제 3번
    태어난 연도를 입력받아 띠 출력하기
    동물이름을 쥐부터 '자,축,인,묘,진,사,오,미,신,유,술,해'로 변경 입력한 연도의 '갑,을,병,정,무,기,경,신,임,계' 이둘을 합쳐 출력하는 프로그램을 만들어보세요.

    const rawInput = prompt('태어난 해을 입력해주세요.','')
    const year = Number(rawInput) 
    
    const a = '신,유,술,해,자,축,인,묘,진,사,오,미'.split(',')
    
    const b = '경,신,임,계,갑,을,병,정,무,기'.split(',')
    
    alert(`${year}년은 ${b[year % 10]}${a[year % 12]} 년입니다.`)
    

    처음에 띠와 연도의 순서를 몰라서 로직을 잘못 짠 줄 알고 한참을 해맸던...
    12간지 순서.., 띠 계산하는 법..

실행결과

앞에서 배운 split를 이용해서 만들어 보았다.if 와 else if 를 통해서도 구현이 가능하다.

다양한 방법이 있는데 어떤 코드가 효율적인지는 어떻게 알 수 있는가 ???

-> 가독성이 좋은 코드가 로직이 좋은 경우가 많기도 하고, 다른 사람이 봤을때 이해하기 쉬운게 괜찮을 것이라는 답변을 받았다. 결론은 가독성은 중요하다!

profile
몰입

0개의 댓글

관련 채용 정보