변수
💡 변수(Variable)는 값(value)을 저장(할당)하고 그 저장된 값을 참조하기 위해 사용한다. 한번 쓰고 버리는 값이 아닌 유지(캐싱)할 필요가 있는 값은 변수에 담아 사용한다. 또한 변수 이름을 통해 값의 의미를 명확히 할 수 있어 코드의 가독성이 좋아진다.💡 변수는 위치(주소)를 기억하는 저장소이다. 위치란 메모리 상의 주소(address)를 의미한다. 즉, 변수란 메모리 주소(Memory address)에 접근하기 위해 사람이 이해할 수 있는 언어로 지정한 식별자(identifier)이다.
값이 저장된 메모리 공간의 주소를 가리키는 식별자(identifier)
변수 선언 방식
var
변수를 한번 더 선언했지만, 에러가 나지 않고 각기 다른 값이 출력됨.
📌 코드량이 많아질 경우에, 어디에서 사용되는지 알기 어렵고, 어디서 사용되는지 파악이 어려움.
- ECMA6
let
name이 이미 선언되어있다는 에러 메시지가 나옴(const도 동일)
변수 재선언이 되지 않음.
const
📌 let과 const의 차이점은, 변수 재선언, 재할당의 차이이다.
const는 변수 재선언, 변수 재할당 모두 불가능하지만, let은 변수 재할당이 가능함.
호이스팅
📌 자바스크립트의 함수가 실생되기 전에 함수 안에 필요한 변수값을들을 모두 모아서 유효 범위의 최상단에 선언하는 것.
자바스크립트의 Parser가 함수 실행 전 해당 함수를 한번 훑는다.
함수 안에 존재하는 변수/함수선언에 대한 정보를 기억하고 있다가 실행
유효범위 : 함수블록
호이스팅의 대상
var변수 선언과 함수선언문에서만 호이스팅이 일어남.
📌 var 변수/함수의 선언만 위로 끌어올려지며, 할당은 끌어올려지지 않음.📌 let, count 변수 선언과 함수표현식에서는 호이스팅이 발생하지 않음.
호이스팅의 우선순위
같은 이름의 var 변수 선언과 함수 선언에서의 호이스팅
변수 선언이 함수 선언보다 위로 끌어올려짐.
📌 함수와 변수를 가급적 코드의 상단부에서 선언하여 호이이스팅으로 인한 스코프 꼬임 현상을 방지해야 함. let / contst를 사용 권장
Last updated