SlideShare a Scribd company logo
1 of 8
발표자 : zero86
Javascript study
호이스팅, 클로저, 실행 컨텍스트
INDEX
01
호이스팅(Hoisting)
02
클로저(Closure)
03
실행 컨텍스트
(Execution Context)
호이스팅(Hoisting)
정의
- 사전적 의미로 들어올리다, 끌어올리다 라는 의미를 지님(명사로는 승강장치)
- 무엇을 끌어올리는데? (해당 컨텍스트 최상단으로!)
1. 변수 선언
2. 함수 선언
예제
01 - Javascript 호이스팅
console.log(a());
console.log(b());
console.log(c());
function a() {
return 'a function..';
}
var b = function b() {
return 'b function..';
}
var c = function() {
return 'c function..';
}
a() 선언부가 아래에 있지만, 정상 실행이 된다.
이게 바로 호이스팅이다.
할당은 해당사항이 아니다.
function a() {
return 'a function..';
}
var b;
var c;
console.log(a());
console.log(b());
console.log(c());
b = function b() {
return 'b function..';
}
c = function() {
return 'c function..';
}
호이스팅(Hoisting)
예제2
- 호이스팅에서 변수가 우선일까? 함수가 우선일까? (호이스팅 순위)
01 - Javascript 호이스팅
옆에 예제를 실행시켜보면, 동일한 변수, 함수 일 경우. 할당이
일어나기전에는 함수 타입으로 나오고, 할당 후에는 string 으
로 바뀌는걸 볼 수 있다.
var myName = "hi";
console.log(typeof myName); // string
console.log(typeof yourName); // function
function myName() {
console.log("yuddomack");
}
function yourName() {
console.log("everyone");
}
var yourName = "bye";
console.log(typeof myName); // string
console.log(typeof yourName); // string
클로저(Closure)
정의
- 클로저는 함수와 함수가 선언된 어휘적 환경(lexical environment)의 조합
- 선언될 당시의 환경정보 사이의 조합(scope와 깊은 관계가 있다)
- 클로저를 잘 활용하면, 캡슐화, 모듈화 작업을 수행할 수 있다. (IIFE가 클로저를 이용한 패턴)
- 일반적으로 함수가 종료되면, 메모리에서 소멸이 되지만 클로저는 이러한 환경 자체를 기억!
예제
02 - Javascript 클로저
function a() {
var x = 1;
function b() {
console.log(x);
}
return b;
}
var c = a();
c();
console.dir(c);
외부에서, x변수 값을 바꿀수 없다.
function a() {
var x = 1;
return {
_get : b,
_set : function(setX) {
x = setX;
}
}
function b() {
console.log(x);
}
}
var c = a();
c._set(100);
c._get();
a함수 내부에서 접근
권한을 부여
* 스코프는 정의될 대 결정된다.
실행 컨텍스트(Execution Context)
정의
- 실행 가능한 코드를 형상화 하고, 구분하는 추상적인개념
- 실행 가능한 JS 코드 블록이 실행되는 환경
- 실행 가능한 코드는 함수, Eval(), 전역 코드
03 - Javascript 실행 컨텍스트
Global 실행 컨텍스트는 제일 먼저 생성된 실행 컨텍스트를 의미.
JS를 처음 실행하면, 글로벌 실행 컨텍스트가 생성이 된다.
execution context Stack 은 실행 컨텍스트를 관리하며, 최상위에
있는 context가 실행중인 컨텍스트다.
실행 컨텍스트(Execution Context)
- 실행 컨텍스트는 call stack 과 유사
- JS가 처음 실행을 하면, 글로벌 컨텍스트 또는 전역 컨텍스트가 생성
- 이후로는, 함수 또는 eval() 실행마다, 해당 실행 컨텍스트가 생성
- 실행 컨텍스트 생성 시, 변수객체(활성객체)를 생성하여 실행에 필요한 정보를 담는다
03 - Javascript 실행 컨텍스트
실행 컨텍스트 흐름
1. 초기화 과정(creation)
Variable Object(변수객체 : VO) 생성
- 변수 / 함수 / 매개변수, 인수, arguments 객체 정보를 담는다.
- 함수 표현식은 제외.
- 변수 undifined로 셋팅. (실제 값은 실행 시, 할당이 된다)
- Scope Chain 정보 생성
- this 바인딩 (글로벌 컨텍스트 에서는 글로벌 객체가 바인딩)
- 호이스팅
2. 실행 과정(Execution)
코드 실행 및, 변수에 값을 할당
실행 컨텍스트(Execution Context) – 인프런 강의 참조
03 - Javascript 실행 컨텍스트

More Related Content

What's hot

Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeYoung-Beom Rhee
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSCirculus
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises우영 주
 
UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료beom kyun choi
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부HongGun Yoo
 
TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)Yong Heui Cho
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsSeok-joon Yun
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료욱진 양
 
[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handlingSeok-joon Yun
 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Seok-joon Yun
 
Scope and Closure of JavaScript
Scope and Closure of JavaScript Scope and Closure of JavaScript
Scope and Closure of JavaScript Dahye Kim
 
Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Ji Hun Kim
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Yong Joon Moon
 

What's hot (20)

Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료UML distilled 1장 스터디 발표 자료
UML distilled 1장 스터디 발표 자료
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
Promise 패턴 공부
Promise 패턴 공부Promise 패턴 공부
Promise 패턴 공부
 
TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threads
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료
 
[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling[KOSSA] C++ Programming - 13th Study - exception handling
[KOSSA] C++ Programming - 13th Study - exception handling
 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
 
ES6 for Node.js Study 3주차
ES6 for Node.js Study 3주차ES6 for Node.js Study 3주차
ES6 for Node.js Study 3주차
 
Scope and Closure of JavaScript
Scope and Closure of JavaScript Scope and Closure of JavaScript
Scope and Closure of JavaScript
 
Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706
 

Similar to javascript02

호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
 
[하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기 [하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기 인권 김
 
120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장tedypicker
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overviewyongwoo Jeon
 
12장 상속 (고급)
12장 상속 (고급)12장 상속 (고급)
12장 상속 (고급)유석 남
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나Astin Choi
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8Sangmin Lee
 
비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기jeong seok yang
 
Macro & compilation
Macro & compilationMacro & compilation
Macro & compilationIkhoon Eom
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍Young-Beom Rhee
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!WooYoung Cho
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)Suwon Chae
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
NDC11_슈퍼클래스
NDC11_슈퍼클래스NDC11_슈퍼클래스
NDC11_슈퍼클래스noerror
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229Yong Joon Moon
 

Similar to javascript02 (20)

호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
[하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기 [하코사 세미나] 비전공자의 자바스크립트 도전기
[하코사 세미나] 비전공자의 자바스크립트 도전기
 
120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장120908 레거시코드활용전략 4장5장
120908 레거시코드활용전략 4장5장
 
EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
 
12장 상속 (고급)
12장 상속 (고급)12장 상속 (고급)
12장 상속 (고급)
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나
 
javascript01
javascript01javascript01
javascript01
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
 
비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기
 
Macro & compilation
Macro & compilationMacro & compilation
Macro & compilation
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
NDC11_슈퍼클래스
NDC11_슈퍼클래스NDC11_슈퍼클래스
NDC11_슈퍼클래스
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229
 

More from ChangHyeon Bae

More from ChangHyeon Bae (14)

Webpack&babel
Webpack&babelWebpack&babel
Webpack&babel
 
ES6-02
ES6-02ES6-02
ES6-02
 
ES6-01
ES6-01ES6-01
ES6-01
 
javascript03
javascript03javascript03
javascript03
 
Java memory
Java memoryJava memory
Java memory
 
JavaScript 실행컨텍스트와 클로저
JavaScript 실행컨텍스트와 클로저JavaScript 실행컨텍스트와 클로저
JavaScript 실행컨텍스트와 클로저
 
WAS와 웹서버 간단 정리
WAS와 웹서버 간단 정리WAS와 웹서버 간단 정리
WAS와 웹서버 간단 정리
 
REST Concept
REST ConceptREST Concept
REST Concept
 
Srping data rest
Srping data restSrping data rest
Srping data rest
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
DI - Dependency Injection
DI - Dependency InjectionDI - Dependency Injection
DI - Dependency Injection
 
CDN - Content Delivery Network
CDN - Content Delivery NetworkCDN - Content Delivery Network
CDN - Content Delivery Network
 

javascript02

  • 1. 발표자 : zero86 Javascript study 호이스팅, 클로저, 실행 컨텍스트
  • 3. 호이스팅(Hoisting) 정의 - 사전적 의미로 들어올리다, 끌어올리다 라는 의미를 지님(명사로는 승강장치) - 무엇을 끌어올리는데? (해당 컨텍스트 최상단으로!) 1. 변수 선언 2. 함수 선언 예제 01 - Javascript 호이스팅 console.log(a()); console.log(b()); console.log(c()); function a() { return 'a function..'; } var b = function b() { return 'b function..'; } var c = function() { return 'c function..'; } a() 선언부가 아래에 있지만, 정상 실행이 된다. 이게 바로 호이스팅이다. 할당은 해당사항이 아니다. function a() { return 'a function..'; } var b; var c; console.log(a()); console.log(b()); console.log(c()); b = function b() { return 'b function..'; } c = function() { return 'c function..'; }
  • 4. 호이스팅(Hoisting) 예제2 - 호이스팅에서 변수가 우선일까? 함수가 우선일까? (호이스팅 순위) 01 - Javascript 호이스팅 옆에 예제를 실행시켜보면, 동일한 변수, 함수 일 경우. 할당이 일어나기전에는 함수 타입으로 나오고, 할당 후에는 string 으 로 바뀌는걸 볼 수 있다. var myName = "hi"; console.log(typeof myName); // string console.log(typeof yourName); // function function myName() { console.log("yuddomack"); } function yourName() { console.log("everyone"); } var yourName = "bye"; console.log(typeof myName); // string console.log(typeof yourName); // string
  • 5. 클로저(Closure) 정의 - 클로저는 함수와 함수가 선언된 어휘적 환경(lexical environment)의 조합 - 선언될 당시의 환경정보 사이의 조합(scope와 깊은 관계가 있다) - 클로저를 잘 활용하면, 캡슐화, 모듈화 작업을 수행할 수 있다. (IIFE가 클로저를 이용한 패턴) - 일반적으로 함수가 종료되면, 메모리에서 소멸이 되지만 클로저는 이러한 환경 자체를 기억! 예제 02 - Javascript 클로저 function a() { var x = 1; function b() { console.log(x); } return b; } var c = a(); c(); console.dir(c); 외부에서, x변수 값을 바꿀수 없다. function a() { var x = 1; return { _get : b, _set : function(setX) { x = setX; } } function b() { console.log(x); } } var c = a(); c._set(100); c._get(); a함수 내부에서 접근 권한을 부여 * 스코프는 정의될 대 결정된다.
  • 6. 실행 컨텍스트(Execution Context) 정의 - 실행 가능한 코드를 형상화 하고, 구분하는 추상적인개념 - 실행 가능한 JS 코드 블록이 실행되는 환경 - 실행 가능한 코드는 함수, Eval(), 전역 코드 03 - Javascript 실행 컨텍스트 Global 실행 컨텍스트는 제일 먼저 생성된 실행 컨텍스트를 의미. JS를 처음 실행하면, 글로벌 실행 컨텍스트가 생성이 된다. execution context Stack 은 실행 컨텍스트를 관리하며, 최상위에 있는 context가 실행중인 컨텍스트다.
  • 7. 실행 컨텍스트(Execution Context) - 실행 컨텍스트는 call stack 과 유사 - JS가 처음 실행을 하면, 글로벌 컨텍스트 또는 전역 컨텍스트가 생성 - 이후로는, 함수 또는 eval() 실행마다, 해당 실행 컨텍스트가 생성 - 실행 컨텍스트 생성 시, 변수객체(활성객체)를 생성하여 실행에 필요한 정보를 담는다 03 - Javascript 실행 컨텍스트 실행 컨텍스트 흐름 1. 초기화 과정(creation) Variable Object(변수객체 : VO) 생성 - 변수 / 함수 / 매개변수, 인수, arguments 객체 정보를 담는다. - 함수 표현식은 제외. - 변수 undifined로 셋팅. (실제 값은 실행 시, 할당이 된다) - Scope Chain 정보 생성 - this 바인딩 (글로벌 컨텍스트 에서는 글로벌 객체가 바인딩) - 호이스팅 2. 실행 과정(Execution) 코드 실행 및, 변수에 값을 할당
  • 8. 실행 컨텍스트(Execution Context) – 인프런 강의 참조 03 - Javascript 실행 컨텍스트