본문 바로가기
공부/Javascript + jQuery

자바스크립트 var와 let의 차이와 호이스팅

by 취미취미 2022. 1. 4.
반응형

const : 상수 변경하고 싶지 않은 값을 만들 때

 

let 과 바의 차이

 

let :

 

var : let보다 var가 먼저 나옴 하지만 ES6 이후 let 이 등장

 

 

호이스팅 : 

자바스크립트의 엔진이 먼저 선언한 변수와 함수를 확인해서 메모리로 가져가 기억해 두고

함수를 실행시키기 전에 함수 안에 있는 변수들의 범위를 최상단으로 끌어올리는 것

var a = 1
console.log(a) // 문제 없음

// b가 선언되기 전에 b를 불러옴
console.log(b) // undefined
var b = 2 // 후에 선언
console.log(b)// 2
// 다른언어에서는 오류가 발생하지만 자바스크립트에서는 호이스팅 때문에
// 선언된 변수를 메모리에 먼저 저장 후 실행될 때 var b = 2를 위로 끌어올려서 실행하게 해줌

자바스크립트에서 호이스팅시 변수의 선언과 초기화(undefined으로) 같이 시켜줌

선언이 안 된 경우 undefined로 먼저 할당을 한 뒤에 뒤에서 선언을 하면 그 때 값을 할당해줌

console.log(a) // undefined
a = 1 // a에 대해 선언도 안하고 값을 넣어줌
var a // 뒤에 선언을 함
console.log(a) //1

그렇기 때문에 위와같은 말도 안되는 식도 실행이 가능함.

 

var는 지역변수와 전역변수 개념의 경계가 확실하지 않음.

** 전역변수 : 블락 밖에서 선언을 한 변수로 어디에서든 쓸 수 있는 변수.

** 지역변수 : 블락 안에서 선언을 한 변수로 블락 안에서만 사용 가능함.

 

for(var i= 1; i<5; i++){
	console.log(i)// 1~4까지 출력됨
}
console.log(i) // 원래는 지역변수이기 때문에 출력되면 안되지만 5가 출력이 됨.

함수만 제외하고 전부 전역변수로 올려줌.

 

var의 문제 동일한 이름의 변수가 2개이상인데 실행이 가능함.

var a = 1
console.log(a)
var a = 2 // 동일한 이름의 변수가 두개
console.log(a)

동일한 이름의 변수가 두개라는 뜻은 나와 똑같은 주민등록번호를 가지고 있는 사람이 한 명 더 있다는 말과 같은 말이됨.

 

 

이러한 문제들을 해결하고자 만든 것이 let.

 

'공부 > Javascript + jQuery' 카테고리의 다른 글

자바스크립트 03.객체(Object)  (0) 2022.01.04
자바스크립트 02.배열(Array)  (0) 2022.01.04
Javascript 문제 : 변수문제  (0) 2022.01.02
Javascript - 01. 변수(variable)  (0) 2022.01.02
jQuery Day4  (0) 2021.11.30

댓글