자바스크립트에서 스코프란 어떤 변수들에 접근할 수 있는지를 정의합니다. 종류는 두가지가 있습니다.
전역스코프(코드 어디에서든지 참조가능)
지역스코프(함수 코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조) 입니다.
var whoAmI = 'globalScope'; // 전역
function localFunc () {
var whoAmI = 'localScope';
console.log(local);
} //지역
localFunc(); // ?
console.log(whoAmI); // ?
위 문제에서 전역에 선언된 변수는 어디서든 참조할 수 있습니다.
하지만 localFunc 내에서 선언된 변수는 localFunc 내부에서만 참조할 수 있고 외부에서는 참조할 수 없습니다.
let global = '100'; // 전역변수
(function () {
let local = '200'; // 지역변수
})();
/*
즉시 실행 함수
(function () {
....
})();
말 그대로 함수를 즉시 실행시켜 준다.
*/
console.log(global); // 100
console.log(local); // 'local' is not defined
자바스크립트는 함수 레벨 스코프를 사용한다. 함수 내에서 선언된 매개변수와 변수는 함수 외부에서 유효 하지 않다.
let iAm = 'global';
function localOne() {
let iAm = 'local';
console.log(iAm);
function localTwo() { // 내부함수
console.log(iAm); // ?
}
localTwo();
}
localOne()
console.log(iAm); // ?
답은 local, local , global이 나온다
예제 1에서 localTwo() 실행하면 iAm을 찾는다. 즉, 내부함수는 자신을 포함하고 있는 외부함수의 변수에 접근할 수 있다.