자바스크립크의 선언에는 var
, let
, const
딱 3가지 방법만 있다.
📌 ES6 문법부터
let
,const
추가 됨
변수란 프로그램을 실행하는 도중에 임의의 값을 저장해 두고 읽을 수 있는 가상 공간을 말한다. 즉, 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇이라고 생각하면 된다.
기본적인 변수 선언하는 방법이 아래와 같다.
var a;
"변할 수 있는 데이터를 만든다. 이 데이터의 식별자는 a로 한다."
var
는 변수를 선언하고, 선택적으로 초기화할 수 있다.
☑️ 변수 중복 선언 가능
☑️ 변수 재할당 가능
☑️ 함수 레벨 스코프 (function-level scope)
☑️ 변수 호이스팅 발생이let
과const
와 다른 방식으로 작동
☑️var
로 선언된 변수는 전역객체의 프로퍼티 ⭕
let
은 블록 유효 범위를 갖는 지역 변수를 선언하며, 선언과 동시에 임의의 값으로 초기화할 수도 있다.
☑️ 변수 중복 선언 불가능
☑️ 변수 재할당 가능
☑️ 블록 레벨 스코프 (block-level scope)
☑️ 변수 호이스팅 발생이var
와 다른 방식으로 작동
☑️var
로 선언된 변수는 전역객체의 프로퍼티 ❌
const
선언은 블록 범위의 상수를 선언한다. 상수의 값은 재할당할 수 없으며 다시 선언할 수도 없다.
☑️ 변수 중복 선언 불가능
☑️ 변수 재할당 불가능
☑️ 블록 레벨 스코프 (block-level scope)
☑️ 변수 호이스팅 발생이var
와 다른 방식으로 작동
☑️var
로 선언된 변수는 전역객체의 프로퍼티 ❌
📌 스코프 (Scope)
스코프(Scope)란 변수에 접근할 수 있는 범위, 현재 실행되는 컨텍스트를 말한다. 여기서 컨텍스트는 값과 표현식이 "표현"되거나 참조 될 수 있음을 의미한다. 만약 변수 또는 다른 표현식이 "해당 스코프"내에 있지 않다면 사용할 수 없다.
📌
전역 변수
: 함수 외부에서 선언한 변수
📌지역 변수
: 함수 내부에서 선언한 변수
📌 let, const는 블록 내부에서 선언한 변수까지도
지역 변수
로 인정한다.
📌 호이스팅 (Hoisting)
호이스팅이란 함수 내부에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최상단에 선언하는 것을 뜻한다.
참조 : https://backstreet-programmer.tistory.com/76
참조 : https://velog.io/@bathingape/JavaScript-var-let-const-%EC%B0%A8%EC%9D%B4%EC%A0%90
참조 : https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d
참조 : https://poiemaweb.com/es6-block-scope
참조 : https://curryyou.tistory.com/192
참조 :