VARIABLES - Block scope

KimsPractice·2022년 11월 22일
0

ES6의 정석

목록 보기
4/30
post-thumbnail

출처: Nomadcoders ES6의정석

let 과 const의 또다른 장점인 Block scope에 대해 알아보자.
scope란 버블같은것으로 각 변수들의 접근여부를 체크하는 유효범위 라고 생각하면 될것같다.

block scope는 변수들의 유효 범위가 block단위( { } 중괄호 )인 scope를 말하는것이다.

예를들면 하단의 코드를 실행하면 어떤 결과가 나올까 ?

if(true){
	let hello = "hi"
}
console.log(hello);


위에서 설명했듯 let과 const는 { } 안에서 유효하기 때문에 밖에서는 참조하지 못해 에러가 발생하는것이다.

그렇다면 var로 변수를 선언하면 어떤일이 벌어질까 ?

if(true){
	var hello = "hi"
}
console.log(hello);


hello의 값이 참조되어 표출된다. 이유는 무엇일까?
var는 let과 const와 달리 유효범위가 다르기 때문이다. var는 function scope로 함수를 기준으로 유효범위가 정해지기 때문에 조건문 안의 hello가 참조가 가능한것이다.

block scope에서 한가지 알아둬야 할 것은 block scope에서는 내부에서 외부로는 참조가 가능하지만 외부에서는 참조가 불가능하다는걸 알아두었으면 한다.

if(true){
	console.log(hello)
    if(true){
		let hello = "hi"
	}
}

if(true){
  	let hello = "hi"
    if(true){
		console.log(hello)	
	}
}


위와 같이 내부에서 외부의 변수는 참조가 가능하나, 외부에서 내부의 변수는 참조하지 못한다.

profile
난 그냥 살아 아주잘살아

0개의 댓글