15.1 var 키워드로 선언한 변수의 문제점  

  15.1.1 변수 중복 선언 허용  

- var 키워드 변수를 중복 선언하면 초기화 문에 따라 다르게 동작함.
→ 초기화 문이 있을 경우 : var 키워드가 없는 것처럼 동작함.

→ 초기화 문이 없을 경우 : 선언문 무시. 에러는 발생하지 않는다.

- 동일한 이름의 변수가 이미 선언된 줄 모르고 중복 선언하며 값을 할당했다면 값이 변경되는 부작용 발생.

  15.1.2 함수 레벨 스코프  

- var 키워드로 선언한 변수는 함수 코드 블록만 지역 스코프로 인정.

- for문의 변수 선언문에서도 전역변수가 됨.

- 함수 레벨 스코프는 전역 변수를 남발할 가능성 높임.

  15.1.3 변수 호이스팅  

- var 키워드로 선언한 변수는 변수 호이스팅에 의해 선두로 끌어올려진 것처럼 동작. 변수 선언문 이전에 참조 가능. 하지만 오류 발생 가능.

  15.2 let 키워드  

  15.2.1 변수 중복 선언 금지  

- let 키워드로 이름이 같은 변수를 중복 선언하면 문법 에러가 발생

  15.2.2 블록 레벨 스코프  

- let 키워드로 선언한 변수는 모든 코드 블록을 지역 스코프로 인정하는 블록 레벨 스코프를 따른다.

  15.2.3 변수 호이스팅  

- let 키워드로 선언한 변수는 선언 단계와 초기화 단계가 분리되어 진행된다.

- 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대라고 부름.

 

- ES6에서 도입된 let, const를 포함해서 모든 선언을 호이스팅 함. 단, let, const, class로 사용한 선언문은 변수 호이스팅이 발생하지 않는 것처럼 동작함. 

  15.2.4 전역 객체와 let  

- let 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아님. window.foo와 같이 접근할 수 없다.

- let 전역 변수는 보이지 않는 개념적인 블록 내에 존재하게 됨.

  15.3 const 키워드  

  15.3.1 선언과 초기화  

- const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화해야 오류가 발생하지 않음.

  15.3.2 재할당 금지  

- const 키워드로 선언한 변수는 재할당이 금지된다.

  15.3.3 상수  

- const 키워드로 선언한 변수에 원시 값을 할당한 경우 원시 값은 변경할 수 없는 값.

- const 키워드에 의해 재할당이 금지되므로 할당된 값을 변경할 수 있는 방법은 없다.

- 상수의 이름은 대문자로 선언해 상수임을 명확히 나타내고 여러 단어로 이뤄진 경우 언더스코어(_)로 구분해서 스네이크 케이스로 표현하는 것이 일반적.

  15.3.4 const 키워드와 객체  

- const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있음. 재할당을 금지할 뿐 불변을 의지하지 않음.

  15.4 var vs. let vs. const  

- 변수 선언에는 const를 사용. 재할당이 필요한 경우 한정해 let 사용.

 

▶ ES6를 사용하면 var키워드 사용하지 않음

▶ 재할당이 필요한 경우 lwt키워드 사용. 변수의 스코프는 최대한 좁게.

▶ 변경이 발생하지 않고 읽기 전용으로 사용하는 원시 값과 객체에는 const키워드 사용.


* 위 내용은 모던 자바스크립트 Deep Dive를 참고하여 개인적인 공부를 목적으로 정리하였습니다.

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791158392239&orderClick=LEa&Kc=

 

모던 자바스크립트 Deep Dive - 교보문고

자바스크립트의 기본 개념과 동작 원리 | 웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도로 태어난 자바스크립트는 과도하다고 느껴질 만큼 친절한 프로그래밍 언어입니다. 이러

www.kyobobook.co.kr