We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The text was updated successfully, but these errors were encountered:
자바스크립트는 렉시컬 스코프를 지원한다.
우선적으로, 자바스크립트 엔진에서 코드를 컴파일 하는 과정을 보면 다음과 같다.
토크나이징/렉싱 - 코드를 잘게 나누어 토큰으로 만든다. 파싱 - 나눈 토큰을 의미있게 AST(Abstract Syntax Tree)라는 트리로 만든다. 코드생성 - AST를 기계어로 만든다.
렉시컬 스코프란 1단계에서 발생하는 즉, 렉싱 과정에서 정의되는 스코프를 말한다. 프로그래머가 변수와 스코프 블록을 어떻게 구성하는냐에 따라 렉싱 타임에서 정의되는 스코프를 렉시컬 스코프라고 한다.
var x = 'global' function test1() { var x = 'local'; test2(); } function test2() { console.log(x); } test1(); //global test2(); //global
위의 코드에서 test2()함수를 어디서 호출하는지가 아닌 어디에 선언되어있냐에 집중할 필요가 있다.
test2()
즉, test2()함수의 상위 스코프는 test1()과 전역이 아닌 전역이다. 이에 따라 test2()에서 출력한 값은 global이 나올 것이다.
global
쉽게 말하면, 렉시컬 스코프는 함수를 어디서 호출하는지가 아닌 어디서 선언했는지에 따라 결정된다. 이러한 특성때문에 정적 스코프(Static Scope) 라고도 한다.
Sorry, something went wrong.
No branches or pull requests
🙏 Reference
The text was updated successfully, but these errors were encountered: