Meme's IT

[JS] 스코프 본문

FrontEnd/JavaScript

[JS] 스코프

Memez 2023. 10. 25. 14:27

# 스코프?

함수, 변수에 접근할 수 있는 범위

외부에서는 접근 불가능한 범위

스코프의 종류로는 전역, 로컬(블록, 함수)

let scope1 = 10
{
  console.log(scope1)	// 10, 위에서 찾아옴
}
let scope1 = 10
{
    console.log(scope1)		// 오류남
    let scope1 = 20
}

 왜 오류..? → 자신의 스코프 안에서 먼저 찾는데, 밑에서 선언을 하니까 오류부터 남

 

 

# 블록 스코프?

if, for, 함수 등의 중괄호 내부를 가리킴

블록 스코프를 가지는 변수는 바깥에서는 접근 불가능

let x = 1
if (x == 1) {
  let x = 2
  console.log(x)  // 2
}
console.log(x)  // 1

지역 변수가 없다면 상위로 가서 찾음

let x = 1
if (x == 1) {
  // let x = 2
  console.log(x)  // 1
}
console.log(x)  // 1

 

 

# 함수 스코프?

함수 내부에서 사용하는 영역

var, let, const 모두 외부에서 사용 불가능

function abc() {
	var varTemp = 10
    let letTemp = 20
}
console.log(varTemp)	// 에러남
console.log(letTemp)	// 에러남
// 함수 스코프 내부의 변수를 참조할 수 없어서 에러남




if (true) {
	var varTemp = 10
    let letTemp = 20
}
console.log(varTemp)	// 얘는 된다
console.log(letTemp)	// 얘는 안됨....
// var는 뚫고 나옴

근데.. var는 함수 스코프에서만 지역 변수로 인식

블록 스코프에서는 전역 변수처럼 인식

 


^^...

만악의 근원 var...

sivar..

'FrontEnd > JavaScript' 카테고리의 다른 글

[JS] 얕은 복사와 깊은 복사  (0) 2023.10.26
[JS] 'this' keyword  (0) 2023.10.25
[JS] 배열(Array)  (0) 2023.10.25
[JS] JSON  (0) 2023.10.25
[JS] Object(객체)  (0) 2023.10.25