let x = 10;
function printX(){
console.log(x);
}
console.log(x);
printX();
✔️ 전역 변수 : 전체 영역에 영향을 미치는 변수.
function printX(){
let x = 10;
console.log(x);
}
// console.log(x); // Error : x is not defined...
printX(); // 10
✔️ 지역 변수 : 함수 내부에만 영향을 미치는 변수.
function scope() {
console.log(a)
if (true) {
var a = 123
}
}
scope() // Undefined
✔️ 함수 레벨의 유효범위
: 함수 내라면 어디서든 사용가능. 함수 외부에서 선언할 경우, 전역 변수.
① 변수 중복선언 가능. ② 변수 재할당 가능
📌 Caution
의도하지 않은 범위에서 사용 가능하여 메모리 누수 발생 위험 → 사용권장 X.
function scope() {
if (true) {
const a = 123
}
console.log(a)
}
scope()
// Uncaught ReferenceError : a is not defined..
✔️ 블럭 레벨의 유효범위
: 모든 코드 블럭 [ 함수 / if 문 / for 문 ... ] 을 지역 스코프로 인정 .
① 변수 중복 선언 불가 ② 변수 재할당 금지 ③ 선언과 동시에 초기화
그러나 변수에 객체를 할당한 경우, 값을 변경할 수 있다.
function scope() {
if (true) {
let a;
a = 123;
}
console.log(a)
}
scope()
// Uncaught ReferenceError : a is not defined..
✔️ 블럭 레벨의 유효범위
: 모든 코드 블럭 [ 함수 / if 문 / for 문 ... ] 을 지역 스코프로 인정 .
① 변수 중복 선언 불가 ② 변수 재할당 가능
📌 Caution
주로 재할당이 필요한 경우에만 let 키워드를 사용하며, 일반적으로는 const 키워드를 사용한다.