본문 바로가기

programming/Javascript

[Javascript] 스코프(Scope), 스코프체인, 렉시컬스코프

스코프 : 범위, 함수를 선언할 때 만들어진다.

전역변수 / 지역변수

 

스코프체인 : 찾는 변수가 내부에 없으면 외부로 -> 전역으로 이어서 찾아가는 것

내부에선 외부로 참조 가능, 외부에서 내부는 참조 불가

var globalName = 'globalName'; // 전역변수

function outer() {
    console.log('외부에서 전역호출', globalName);// 외부에서 전역호출
    var outName = 'outName';

    function inner() {
        console.log('내부에서 전역호출', globalName); //내부에서 전역호출
        console.log('내부에서 외부호출', outName);
        var inName = 'inName';
    }
    inner();
}
outer();

console.log(outName); // outName is not defined
console.log(inName); // inName is not defined

 

 

렉시컬 스코프 (Lexical Scope) : (어휘적 범위) 함수는 선언될때 범위가 만들어진다.

var name = 'Mike';
function log() {
  console.log(name);
}

function wrapper() {
  var name = 'Sally';
  log();
}
wrapper();