렉시컬 스코프
var name = "홍길동";
function name1() {
var name = "가나다";
console.log(name);
name2();
}
function name2() {
console.log(name);
}
name1();
name2();
var name = "홍길동";
function name1() {
name = "가나다";
console.log(name);
name2();
}
function name2() {
console.log(name);
}
name1();
name2();
렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정된다.
스코프 체인 -제로초 - https://www.zerocho.com/ 블로그참조
바로 전역변수와 지역변수의 관계에서 스코프 체인(scope chain)이란 개념이 나옵니다.
내부 함수에서는 외부 함수의 변수에 접근 가능하지만 외부 함수에서는 내부 함수의 변수에 접근할 수 없습니다. (아래 enemy가 undefined인 것을 보시죠) 그리고 모든 함수들은 전역 객체에 접근할 수 있죠. 위의 예제와 비슷한 예제를 하나 더 보여드리겠습니다.
var name = 'zero';
function outer() {
console.log('외부', name);
function inner() {
var enemy = 'nero';
console.log('내부', name);
}
inner();
}
outer();
console.log(enemy); // undefined
inner 함수는 name 변수를 찾기 위해 먼저 자기 자신의 스코프에서 찾고, 없으면 한 단계 올라가 outer 스코프에서 찾고, 없으면 다시 올라가 결국 전역 스코프에서 찾습니다.
다행히 전역 스코프에서 name 변수를 찾아서 'zero'라는 값을 얻었습니다.
만약 전역 스코프에도 없다면 변수를 찾지 못하였다는 에러가 발생합니다. 이렇게 꼬리를 물고 계속 범위를 넓히면서 찾는 관계를 스코프 체인이라고 부릅니다.
Author And Source
이 문제에 관하여(렉시컬 스코프), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlatmdgns94/렉시컬-스코프저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)