자바스크립트(12)
-
[JavaScript]자바스크립트_스코프 클로저
💻 핵심 클로져 함수가 속한 렉시컬 스코프를 기억하여 렉시컬 스코프 밖에서도 스코프에 접근가능하도록 해주는 기능 예제 function foo(){ var a=2; function bar(){ console.log(a); } return bar(); } var baz= foo(); baz(); //2 함수 bar()는 foo() 내부 렉시컬 스코프에 존재하고, 이 bar()는 foo() 스코프에 대한 클로저를 가집니다. 변수에 foo()를 대입하여, 반환된 bar()함수를 호출하여, bar() 를 렉시컬 스코프 외부에서 실행 💡 bar()는 foo()의 호출이 끝나더라도, 여전히 해당 스코프에 대한 참조를 가짐 : 클로저 함수는 처음 선언된 곳의 스코프에 대한 참조를 유지 👉 어디에서 해당 함수를 실행하든..
2021.08.09 -
[JavaScript]자바스크립트 호이스팅
자바스크립트는 순차적으로 코드가 실행되어 선언문 이후에 변수가 대입되어야 값을 이용할 수 있다고 생각합니다. 하지만, 컴파일러의 역할을 다시 생각해보면, 그것이 아니란 것을 알 수 있습니다. a = 2; var a; console.log( a ); // 출력 : 2 💻 컴파일러는 두번 공격한다. 자바스크립트의 컴파일레이션 단계에서 '렉시컬 스코프' : 모든 선언문을 찾아 적절한 스코프에 연결해주는 과정 var a = 2 var a; a = 2; 자바스크립트는 위 구문을 선언문과 대입문으로 나누어 처리합니다. 선언문: 컴파일레이션 단계에서 처리 대입문: 실행단계에서 처리 👉 '호이스팅' : 변수와 함수 선언문은 선언된 위치 스코프에서 최상단으로 끌어올려지는 동작 ❗ 선언문은 컴파일레이션 단계에서 처리되어,..
2021.08.03 -
[JavaScript]자바스크립트 블록 스코프
이전 포스팅에서는 자바스크립트의 일반적인 스코프로 함수 기반 스코프를 공부하였습니다. 이번 포스팅에서는 함수 기반 말고 사용가능한 블록 스코프에 대해 정리해보겠습니다. :-D 💻 스코프 역할을 하는 블록 함수 기반 스코프와 달리, 블록 스코프 👉 감싸진 블록 내의 범위로 묶이는 스코프 일반적인 블록 스코프의 예시로는 아래와 같은 for문이 있습니다. for(var i=0;i
2021.08.02 -
[JavaScript]자바스크립트 함수 스코프
스코프 컨테이너 구실을 하는 일련의 '버블' 스코프 안에 확인자(변수 & 함수) 선언 💻 함수 기반 스코프 함수 기반 스코프란, 함수를 기준으로 스코프가 생성됨 function foo(a){ var b = 2; function bar() { var c = 3; } } foo함수 & bar 함수 & 글로벌 스코프 는 자체 스코프 버블 존재 foo 함수 스코프 버블 👉 a, b, c, bar() 포함 bar 함수 스코프 버블 👉 c 포함 글로벌 스코프 버블 👉 foo() 포함 ❗ 스코프 버블 내의 확인자는 외부에서 접근 불가 bar();//ReferenceError console.log(a,b,c); //ReferenceError 함수 스코프 모든 변수가 함수에 속함 함수 전체에 걸쳐 사용 및 재사용 👉 다..
2021.07.31 -
[JavaScript]자바스크립트, 렉시컬 스코프
자바스크립트의 스코프는 아래 두가지 방식으로 동작 렉시컬 스코프 동적 스코프 💻 렉스타임 이전 포스팅에서 살펴 본 것처럼 컴파일러는 토크나이징/렉싱 작업을 수행합니다. 이 렉싱 과정에서 생성된 토큰에 의미를 부여하는데 이 개념이 렉시컬 스코프의 바탕이 됩니다. 👉 렉시컬 스코프 : 렉싱 타입에 정의되는 스코프 + 개발자가 코드 짤 때, 변수와 스코프 블록을 어디서 작성하는가에 기초하여 렉서가 코드 처리 예제 function foo(a){ var b= a*2; function bar(c){ console.log(a, b, c); } bar(b*3); } foo(2); //2, 4, 12 3개의 중첩 스코프(스코프 버블) 글로벌 스코프, 확인자 - foo foo 스코프, 확인자 - a, var, b bar ..
2021.07.28 -
[JavaScript] 자바스크립트 스코프
스코프란? 특정 장소에 변수를 저장하고 나중에 그 변수를 찾는 데에 필요한 규칙 💻 컴파일러 이론 자바스크립트 또한 컴파일러 언어로서, 컴파일러언어의 처리과정 3단계인 컴파일레이션을 수행 💡 토크나이징/ 렉싱 문자열을 토큰으로 만드는 과정 var a =2; 👉 var, a = 2 ; 💡 파싱 토큰 배열을 문법 구조를 반영하여 👉 AST(추상 구문 트리) var a = 2; 의 경우, 변수 선언( : 최상위 노드) 에서 시작 확인자 : a 대입수식 : 2 💡 코드생성 AST를 기계어 집합으로 바꾸어 실행코드로 변경 💻 스코프 이해하기 💡 처리의 수행자 var a=2; 엔진 컴파일레이션 전과정을 책임 컴파일러 파싱, 코드생성의 모든잡일 스코프 선언된 모든 확인자(변수) 검색 목록 작성 및 유지 엄경한 규칙을..
2021.07.20