JS 기본 정리 01 (식별자, 자료 타입, 조건문, 반복문)

도깨비젤리

·

2021. 4. 30. 00:22

  • 식별자 : 변수를 구분할 수 있는 변수명을 뜻한다.
    • 식별자의 주요한 특징
    1. 반드시 문자, $, _로 시작해야한다
    2. 대소문자를 구분하며, 클래스명 외에는 모두 소문자로 시작
    3. 식별자로 예약어를 사용할 수 없다.
  • 변수 선언 키워드
    1. let
      1. 재할당이 가능하다
      2. 변수의 재선언이 안된다
      3. 블록스코프 단위로 동작한다
    2. const
      1. 재할당 할 수 없는 변수 선언 시 사용
      2. 변수 재선언 불가능
      3. 블록 스코프 단위 동작

var라는 선언 키워드도 있는데, ES6부터는 사용하지 않고 있다


선언 (Declaration)

  • 변수를 생성하는 행위 또는 시점
 let foo

할당 (Assignment)

  • 선언된 변수에 값을 저장하는 행위 또는 시점
foo = 11

초기화 (Initialization)

  • 선언된 변수에 처음으로 값을 저장하는 행위 또는 시점
let bar = 0
  • 재할당을 할 수 없다(const) : 한번 선언하면 다시 값을 바꿀 수 없다
  • 재선언을 할 수 없다(let,const) : 같은 이름의 변수로 만들 수 없다.
  • var 키워드로 만든 변수는 재선언과 재할당이 모두 가능하지만 변수를 선언 이전에 참조할 수 있는 현상인 (hoisting) 때문에 전혀 사용하지 않는다.

JS의 데이터 타입 종류
  1. 원시타입 : 객체가 아닌 타입들을 말한다
    • 특징 : 변수에 해당 타입의 값이 담기고, 다른 변수에 복사할 때 실제 값이 복사된다 (value)
    • 종류 : Number,String,Boolean,undefined,null,Symbol
  2. 참조타입 : 객체 타입의 자료형을 말한다
    • 특징 : 변수에 해당 객체의 참조 값이 담긴다, 다른 변수에 복사할 때 참조 값이 복사된다(reference)
    • 종류 : Array, Function

타입별 상세 정보
  • 숫자 (Number) 타입o 부동소수점 형식을 따름
    • ex) foo / 1004 => NaN
    • 참고) NaN (Not-A-Number) -> 계산 불가능한 경우 반환되는 값
    • 정수, 실수 구분 없는 하나의 숫자 타입
  • 문자열 (String) 타입
    • 16비트 유니코드 문자의 집합
    • 템플릿 리터럴 (Template Literal)
    • 따옴표 대신 backtick()으로 표현
    • ${ expression }형태로 표현식 삽입 가능
    • ES6부터 지원
    • 작은따옴표 또는 큰따옴표 모두 가능
    • 텍스트 데이터를 나타내는 타입
  • undefined
    • 변수 선언 이후 직접 값을 할당하지 않으면 자동으로 undefined가 할당됨
    • 변수의 값이 없음을 나타내는 데이터 타입
  • null
    • 변수의 값이 없음을 의도적으로 표현할 때 사용하는 데이터 타입 
    • null 타입은 ECMA 명세의 원시 타입의 정의에 따라 원시 타입에 속하지만, typeof 연산자의 결과는 객체(object)로 표현
    • typeof 연산자 : 자료형 평가를 위한 연산자
  • 불리언 (Boolean) 타입
    •  true 또는 false로 표현
    • 변수가 다음과 같을 때 자동으로 형변환이 된다 : 0,-0,NaN (거짓) / 빈 문자열 (거짓) / Object type (항상 참)
    • 논리적 참 또는 거짓을 나타내는 타입

연산자

  • ++ : 피연산자의 값을 1 증가
  • -- : 피연산자의 값을 1 감소

--> Python과 마찬가지로 += , -=도 동일하게 작동 (뿐만 아니라, Airbnb Style Guide에서는 이를 권장하고 있다)

 

  • == : 타입을 자동으로 일치 시킨 후 비교 ( 동등 비교 연산자)
  • === : 엄격한 비교가 시행됨 ( 암묵적 타입 변환 X)
  • && : and
  • || : or
  • ! : not
  • 삼항 연산자 : 세개의 피연산자를 사용하여 조건에 맞게 값을 반환하는 연산자
                        질의문            질의가 참일때 출력        질의가 거짓일때 출력
console.log(const Lorem = a>b ? ' a is bigger than b' : 'b is bigger than a')

조건문
  • if statement
    • 조건 표현식의 결과값을 Boolean 타입으로 변환 후 참/거짓을 판단
    • 조건은 소괄호(condition)에 작성 실행할 코드는 중괄호에 작성
    • 블록 스코프를 생성한다
    • if(condition){ //do smt }else if(condition){ //do smt }else{ //do smt }
  • switch statement
    • 조건 표현식의 결과 값이 어느 값(case)에 해당하는지 판별
    • 주로 특정 변수의 값에 따라 조건을 분기할 때 활용한다.
    • break 및 default는 선택적으로 사용 가능
    • break문이 없는 경우 break문을 만나거나 default문을 실행할 때까지 다음 조건문 실행
    switch(expression){
            //expression의 결과가 '1'일떄 실행
            case '1' {
                //do smt        
    }
    case '2':{
        //do smt
        break // 이거 없으면 멈추지 않고 쭉 내려간다
    }
    default {
    //do smt
    }
    }
    • break 구문이 없으면 default를 만날때까지 계속 밑으로 내려가면서 실행된다.
반복문
  • while : 조건문을 소괄호에 작성. 실행 코드는 중괄호에 작성. 블록 스코프 생성
  • for : 세미 콜론으로 구분되는 세부분으로 작성
    • initialization
      • 최초 1회만 실행되는 부분
    • condition
      • 매 반복 시행 전 평가되는 부분
    • expression
      • 매 반복 시행 이후 평가되는 부분
    • 블록 스코프 생성
    for (let i = 0 ; i<6; i++){
        //do smt
    }
  • for in
    • 객체(object)의 속성을 순회할 때 사용
    • 블록스코프 생성
    for (variable in object){
        //do smt
    }
  • for of
    • 반복 가능한 객체(object) 를 순회하면서 값을 꺼낼 때 사용
    • 배열의 원소에 접근한다
    • 블록 스코프 생성
    for (variable of iterables){
        // do smt
    }