728x90
var
- 동일한 변수로 중복 선언이 가능
- function scope이다
- 호이스팅시 선언과 동시에 undefined가 초기화된다.
< var를 사용하면 안 되는 이유 >
- block scope 가 아니기 때문에 block scope 안에 var로 선언을 해도 전역에서 사용할 수 있게 된다 그렇게 되면 개발자의 의도와 다르게 변수 할당이 일어날 수 있고 위험한 단점이 있기 때문에 변수를 선언할 때는 let과 const를 사용해야 한다.
- 변수 Hoisting 현상에서 var는 function scope 이기 때문에 선언하기 전에 할당을 하거나 출력을 해도 에러가 나지 않고 undefined 돼버려서 예측하기 힘든 코드가 되어 버린다
function scope 란?
- 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.
ES6부터 추가된 변수 let과 const
block scope 란?
- 모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.
let
- 변수 재선언 불가능 , 변수 재할당 가능
- block scope이다
const (상수)
- 변수 재선언 불가능, 변수 재할당 불가능
- const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화 해야한다
- 변수 네이밍은 되도록 대문자로 해준다
- block scope이다
- 재할당이 필요 없고 바뀌면 안 되는 변수가 필요할 때 사용 하기 적절하다
let과 const 호이 스팅
- let과 const는 호이스팅은 되지만, undefined로 초기화되는 것이 아니라 초기화가 필요한 상태가 되며, 이때 변수를 불러올 경우 ReferenceError가 발생한다.
728x90
'JavaScript > 기초' 카테고리의 다른 글
자바스크립트[기초] ES6 프로미스 Promise | promiseGet (0) | 2022.05.01 |
---|---|
자바스크립트[기초] Ajax (0) | 2022.05.01 |
자바스크립트[기초] 마우스 커서의 좌표 구하기 (0) | 2022.04.21 |
자바스크립트[기초] e.preventDefault() (0) | 2022.04.21 |
자바스크립트[기초] e.stopPropagation() (0) | 2022.04.21 |