Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 스위프트
- play2 강좌
- 파이썬 강좌
- 파이썬 데이터분석
- Play2 로 웹 개발
- CORDA
- Actor
- 하이브리드앱
- 스칼라 동시성
- 안드로이드 웹뷰
- 주키퍼
- 블록체인
- 파이썬 머신러닝
- akka 강좌
- play 강좌
- 플레이프레임워크
- 스칼라 강좌
- Hyperledger fabric gossip protocol
- hyperledger fabric
- 이더리움
- Play2
- Golang
- 하이퍼레저 패브릭
- 파이썬
- Adapter 패턴
- 파이썬 동시성
- 그라파나
- 스칼라
- Akka
- 엔터프라이즈 블록체인
Archives
- Today
- Total
HAMA 블로그
자바스크립트 - 컨텍스트 본문
1. 실행 컨텍스트
- 실행 가능한 자바스크립트 코드블록이 실행되는 환경
- 실행 컨텍스트가 형성되는 경우
- 전역코드
- eval() 함수로 실행되는 경우
- 함수 안의 코드를 실행한 경우 <- 대부분의 경우임
스택에 들어가고 제어권이 그 컨텍스트로 이동한다.
* 실행 컨텍스트 생성과정
1) 활성객체 생성
- 해당 컨텍스트에서 실행에 필요한 정보(매개변수, 사용자정의 객체 등)들을 저장.
2) arguments 객체 생성
- 활성객체는 arguments 프로퍼티로 arguments 객체 참조
3) 스코프 정보 생성
- 현재 컨텍스트의 유효범위를 나타내는 스코프 정보를 생성. Linked List 구조로 상위 컨텍스트
접근 가능.
접근 가능.
- 현재 생성된 객체가 스코프 체인의 제일 앞에 추가되며, execute()함수의 인자나 지역변수 등에
접근할 수 있다.
접근할 수 있다.
4) 변수 생성
- 컨텍스트 내부에서 사용되는 지역변수 생성.
- 변수나 내부함수를 메모리에 생성만 함. 변수값에 undefined 할당.
(초기화는 각 변수나 함수식 실행 시 수행됨)
(초기화는 각 변수나 함수식 실행 시 수행됨)
5) this 바인딩
- this 키워드를 사용하는 값이 할당됨. 참조객체가 없으면 전역객체 참조.
6) 코드 실행
- 코드 내 표현식 실행. 변수 초기화 ,연산, 또라는 하뭇 실행 등 수행.
(* 전역 실행 컨텍스트는 arguments 객체가 없으며 전역객체 하나만을 포함하는 스코프 체인이 있음)
2. 스코프 체인
- Javascript 에서는 함수내의 {} 블록 구문은 유효범위가 없음. 오직 함수만이 유효범위의 한 단위가 됨.
- 이 유효범위를 나타내는 스코프가 [[scope]] 프로퍼티로 각 함수 객체 내에서 Linked List 형식으로 관리되며 이를 스코프 체인이라 함.
- 각 실행컨텍스트의 변수객체가 구성요소인 리스트와 같다.
- 각각의 함수는 [[scope]] 프로퍼티로 자신이 생성된 실행 컨텍스트의 스코프 체인을 참조한다.
- 이 실행 컨텍스트는 실행된 함수의 [[scope]] 프로퍼티를 기반으로 새로운 체인을 만든다.
1) 전역실행 컨텍스트의 스코프 체인
2) 함수를 호출한 경우 생성되는 실행 컨텍스트의 스코프 체인
2. 클로저
- 이미 생명 주기가 끝난 외부함수의 변수를 참조하는 함수
- 클로저로 참조되는 외부변수를 자유변수(Free Variable) 라 부른다.
1) 클로저의 활용
- 특정 함수 사용자가 정의한 객체의 메서드 연결하기
- 함수의 캡슐화
: 클로저는 사용하여 buffAr 변수를 외부접근으로 부터 차단.
2) 클로저를 활용할 때 주의사항
- 클로저의 프로퍼티 값이 쓰기 가능하므로 그 값이 여러 번 호출로 항상 변할 수 있음에 유의한다.
- 하나의 클로저가 여러 함수 객체의 스코프 체인에 들어가 있는 경우도 있다.
- 루프 안에서 클로저를 활용할 때는 주의하자.
'Javascript' 카테고리의 다른 글
TYPESCRIPT + EXPRESS + NODE.JS 구축 (0) | 2016.06.22 |
---|---|
심심풀이 자바스크립트 퀴즈 (0) | 2015.11.18 |
자바스크립트 - 모듈 패턴 (0) | 2015.11.17 |
잊을만할때 다시 훑어보는 Javascript (0) | 2015.05.26 |
자바스크립트의 메모리관리 (1) | 2015.05.24 |
Comments