[Deep JavaScript] 스코프

Dae-Hee·2021년 12월 11일
0

Deep JavaScript Study

목록 보기
7/12
post-thumbnail

▪︎ Intro


실행 컨텍스트를 이해하기 위해 다시한번 스코프를 정리할 필요성을 느꼈습니다.


▪︎ 스코프란?


  • 변수에 접근할 수 있는 범위로 전역(global)과 지역(local) 2개의 범위가 있습니다.

전역 스코프

const nm = "JO";
function cons(){
	console.log(nm);
	// JO
}

console.log(nm);
// JO
전역 스코프로 선언된 변수는 모든 범위에서 사용할 수 있습니다.

로컬 스코프

{
	const nm = "JO";
	console.log(nm);
	// JO
}

console.log(nm);
// Error
선언된 블럭 내에서만 변수를 사용할 수 있으며, 해당 블럭을 벗어난다면 사용할 수 없습니다.

▪︎ let, const와 var의 스코프


  • const와 let의 스코프는 블록 범위에 속하고, var의 스코프는 함수 범위에 속합니다.
  • 따라서 var는 함수가 아닌 {} 안에서 선언 되어도 외부에서 접근이 가능합니다.
{
  var nm = "JO";
  console.log(nm);
  // JO
}

console.log(nm);
// JO

▪︎ 중첩 스코프


  • 모든 스코프는 중첩이 가능합니다.
function fnc(){
	const nm = "JO";
	{
		const nik = "HEE";
		console.log(nm);
		// JO
	}
	console.log(nik);
	// Error
}
nik이 선언된 블럭은 내부 범위이며, 해당 블럭에서의 바깥 함수 영역은 외부 범위입니다.

외부 범위에서 선언된 변수는 내부 범위에서 사용 할 수 있지만 
내부 범위에 선언된 변수는 외부 범위에서 사용 할 수 없습니다.

Reference

https://poiemaweb.com/js-scope

0개의 댓글