지역 변수 : {} 영역 안에서만 적용
전역 변수 : 문서 전체에 적용
//전역 변수
let aLet = 10; // 블록 스코프(block scope) -> {}
var bVar = 10; // 펑션 스코프(function scope) -> function() {}
const noName1 = () => console.log(`noName1 함수 내부에 적용됨: ${bVar}`);
// 전역 var변수 bVar의 값을 함수 내부로 전달 받을 수 있음.
console.log(`noName1 문서 전체에 적용됨: ${bVar}`);
// 함수 외부에도 당연히 적용 됨.
noName1();
const noName2 = () => console.log(`noName2 함수 내부에 적용: ${aLet}`);
noName2();
// 전역 let 변수도 함수 내부로 전달이 잘 됨.
전역 변수는 함수 내부에서 접근이 가능하지만
외부에서 함수 내부의 지역 변수로 접근은 불가능하다.
let aLet = 10;
var bVar = 10;
function noName3() {
let aLet = 30; // 블록문 내
var bVar = 40; // 함수 내
console.log(`내부에서만 적용되는 aLet: ${aLet} bVar: ${bVar}`);
}
noName3();
console.log(`지역 변수는 해당 범위를 벗어날 수 없다. aLet: ${aLet} bVar: ${bVar}`);
let변수는 재선언이 불가능하지만 전역 변수와 지역 변수는 분리되어있기 때문에
함수 외부에서 전역 변수로 let을 선언했어도 함수 내부에서 let 변수의 재선언이 가능하다. 단, 내부에서만 적용.
let aLet = 10;
var bVar = 10;
var bVar = 100; // var는 재선언 가능
//let aLet = 50; // let은 같은 식별자로 재선언이 불가능.
// => let은 재할당으로 아래와 같이 작성하면 된다.
aLet = 50;
console.log(`var변수는 재선언 가능 ${bVar}, let변수는 재선언 불가능${aLet}`);
함수 내부에서 let이나 var 키워드를 생략하고 작성하면 전역변수가 된다.
let aLet = 10;
var bVar = 10;
function noName4() {
//변수 키워드 없이 작성하면 전역변수
aLet = 1000;
bVar = 1500;
}
noName4();
console.log(`aLet: ${aLet} bVar: ${bVar}`)
'JavaScript' 카테고리의 다른 글
| [JavaScript] 중첩 함수/ 내부 함수 (0) | 2022.12.02 |
|---|---|
| [JavaScript] 즉시 실행 함수 (0) | 2022.12.02 |
| [JavaScript] 기본 연산자 (0) | 2022.12.01 |
| [JavaScript] 객체의 형 변환 (0) | 2022.12.01 |
| [JavaScript] 자료형 (0) | 2022.12.01 |