// 예시
let a = 100;
funtion 전역변수() {
return a
}
전역변수() // 출력 = 100
다음과 같이 블록 밖에서 선언후 블록 안에서도 접근이 가능하다.
하지만 이점이 단점으로 작용하기도 한다. 아래는 단점의 예시이다.
let a = 100;
funtion 전역변수() {
a = 200
console.log(a) // 출력 = 200
}
전역변수() // 출력 = 200
위는 전역변수 a로 100을 넣어놓고 블록안에 지역변수로 let을 까먹고 200을 다시 넣으면 전역변수 a가 200으로 바뀌는 경우다. 위와 같은 경우가 생길수 있다.
function 함수스코프() {
var a = "변수" //함수스코프 (지역변수)
return a
}
console.log(함수스코프()); // a
console.log(a); // Uncaught ReferenceError
위와 같이 함수 내부에선 접근이 가능하지만 함수 밖에서 변수에 접근하면 에러가 출력된다.{
const a = 100
console.log("안에서", a) // 100
}
console.log("밖에서", a) // error
위의 예시는 let으로 해도 동일하다. {
var a = 100
console.log("안에서", a) // 100
}
console.log("밖에서", a) // 100
위와 같이 var는 블록 스코프가 아니기때문에 외부에서도 접근이 가능하다.