항상 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값 리턴