TIL2 (2020.12.09)

김지민·2020년 12월 10일
0

TIL

목록 보기
1/28

항상 TIL을 쓰며 모르는 용어들에 대해 같이 적었었는데 분량이 너무 많아져 분리... 모르는게 많다는 것이니 ㅠㅠ

1. var, const, let

  • 각각 변수 선언 타입을 뜻함
  • 각 변수 선언 타입은 스코프, 호이스팅 특징에 따라 구분됨

1) var

  • 함수 레벨 스코프. ES5에서 사용되던 변수 선언 방법
  • var로 선언된 변수는 여러 문제점을 가지고 있음

1-1. 함수 레벨 스코프(함수 내에서 선언된 변수는 함수 내에서만 유효. 함수 외부, 즉 전역변수 범위에서는 참조 불가)

  • 전역변수의 남발
  • for loop 초기화시에서 사용한 변수를 for loop외부 또는 전역에서 참조할 수 있다.

1-2. var키워드 생략 허용

  • 의도치 않은 변수의 전역화 위험

1-3. 중복 선언 허용

  • 의도치 않은 변수값 변경

1-4. 변수 호이스팅

  • 변수 선언 전 참조가 가능

var의 결론

  • var의 대부분의 문제점은 전역변수로 인해 발생. 간단한 app의 경우 전역변수가 편리할 수 있으나 스코프가 넓음에 따라 어디서 참조될지 파악이 어려움.
    이는 의도치 않은 변수의 변경 가능성이 높아지고, 여러 함수와 상호 의존하는 등 side effect가 발생할 수 있어 복잡성이 높다.
    = 즉 변수의 스코프는 좁을수록 좋으며 var는 쓸 일이 거의 없을 것이다.

2. let

  • var의 문제점을 보완하기 위해 ES6에서 추가됨
    특징으로는

2-1. 블록 레벨 스코프

2-2. 변수 중복 선언 금지

  • var는 동일한 이름을 갖는 변수의 중복 선언이 가능했음. let은 불가. 선언시 syntax error가 발생.

2-3. 호이스팅(hoisting)

  • var 선언문이나 function 선언문 등을 해당 스코프의 선두로 옮긴것처럼 동작하는 특징
  • var는 변수 선언 전 참조가 가능했으나(undefined 형태로) let은 불가.

3. const

  • let과 같은 특성. 하지만 let과 달리 재선언 불가.

2. IIFE

  • 즉시 실행 함수 표현식
  • 함수 리터럴을 소괄호()로 감싼 뒤 바로 실행하는 형태
  • 함수 리터럴: 자바스크립트에서 함수를 정의하는 표현식
    • 예약어 function(필수), 함수이름(선택), 매개변수 집합(필수), 함수부문(필수) 로 구성됨

3. switch문

  • 다중조건 처리해야하는 경우 if문 대신 사용 가능
switch() {
  case 값1 :
  리턴값1;
  break;
  case 값2 :
  리턴값2;
  break;
  default:
  리턴값;
 }
  • 매개변수와 case값이 같은 경우 해당하는 case의 리턴값 표시
  • if문에서 중괄호로 구분되던 영역을 case와 break로 구분
  • 모든 조건이 맞지 않을때 default값 리턴
profile
wishing is not enough, we must do.

0개의 댓글