코드스테이츠 3주차 / 스코프

support·2021년 10월 25일
0
post-thumbnail

✏️Achievement Goals

✅ 스코프의 의미와 적용 범위를 이해할 수 있다
✅ 스코프의 주요 규칙을 이해할 수 있다
✅ 중첩 규칙
✅ block scope와 function scope
✅ 전역 스코프와 지역 스코프
✅ 전역 변수와 지역 변수간의 우선 순위
✅ let, const, var 의 차이
✅ 전역 객체(window)의 이해

📝summary

스코프 : "선언한 변수에 접근 할 수 있는 범위"

스코프의 종류
1. Global Scope(전역변수)
2. Local Scope(지역변수) - Function Scope(함수로 둘러싼 범위),
Block Scope(중괄호로 둘러싼 범위)
화살표 함수는 블록 스코프로 취급된다

1. Global Scope(전역변수)

어디서든지 접근 가능한 변수

var a = 10; 
// 전역변수 - 어디서든지 접근 가능한 변수
// 1. 밖에서 선언, 2. 블럭스코프에서 var변수를 사용

if (true) {
	console.log(a); // 10
	var a = 20;
    console.log(a); // 20
}

console.log(a); // 20

function test() {
	console.log(a) // 20
}

// 전역변수로 선언이 되었으면 어디서든지 사용이 가능하다

2. Local Scope(지역변수)

블럭이나 함수안에서 선언된 변수

// 블럭스코프

if (true) {
	let a = 20;
  	// 블럭안에서 선언한 변수는 지역변수에 해당
  	// 블럭 안에서만 사용이 가능하다 
    console.log(a); // 20
}

// 함수스코프
function test() {
	var b = 30 
    // function안에서 선언된 변수는 지역변수에 해당 
    // Local Scope 안에서만 사용이 가능하다
    // function 안에서 선언된 선언문을 Function Scope라고 한다
	console.log(a) // error - a는 지역스코프 이기때문에 밖에서 사용할 수 없다
  	console.log(b) // 30
}

console.log(b) // error - 지역스코프이기 때문에 밖에서는 b를 사용할 수 없다
  • var 사용시 유의점

블럭스코프의 경우에만 var로 선언을 했을때 전역스코프로 바뀌게 된다

// 블럭스코프
if (true) {
	var a = 20;
    console.log(a); // 20
}

// 함수스코프
function test() {
	var b = 30 
	console.log(a) // 20
  	// 블럭스코프의 경우 var로 선언을 했을때 전역스코프로 바뀌게 되어서
  	// a의 값을 가져 올 수 있다
}


스코프의 특징

  1. 안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대는 불가능
    (바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능
    반면에, 안쪽에서 선언한 변수는 바깥쪽 스코프에서는 사용할 수 없다)
  2. 스코프는 중첩이 가능하다
  3. 가장 바깥쪽의 스코프는 전역 스코프(Global Scope)라 부른다
    전역이 아닌 다른 스코프는 전부 지역 스코프(local scope)라고 부른다
  4. 지역변수는 전역 변수보다 더 높은 우선순위를 가진다
    (지역 스코프에 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수)

0개의 댓글