SlideShare a Scribd company logo
1 of 40
全局上下文
全局代码
函数上下文
函数代码
eval上下文
eval代码
作用域链
Scope chain
this
变量对象
Variable object
Calling context:
全局上下文
Calling context:
test上下文
EC 栈
inner EC
全局 EC
foo ECeval EC
全局上下文
全局对象
函数上下文
激活对象
eval上下文
Calling
context.vo
内置
NaN
undefined
parseFloat
eval
parseInt
Object
Function
……
用户添加
……
宿主环境
window
alert
……
{ DontEnum }
function test(y){
var x
function x() {}
}
test(1);
function test(y){
alert(x);
var x = 10;
alert(x);
x = 20;
function x() {}
alert(x);
alert(y);
}
test(1);
function test(y){
alert(x);
x = 10;
alert(x);
x = 20;
alert(x);
alert(y);
}
test(1);
全局上下文
scope chain = [全局对象]
函数上下文
scope chain = 激活对象 + function.[[scope]]
eval上下文
scope chain = calling context.scope chain
function.[[scope]] =
函数创建时所在EC.scope chain
base object test ao
property name x
标示符解析
Identifier Resolution
1.从作用域链中
取下一个元素
Result(1).[[HasProperty]](Identifier)
No
Yes
base object Result(1)
property name Identifier
Yes
No
base object null
property name Identifier
 确定当前变量属于作用域链中的哪个
变量对象
 永远返回Reference
全局上下文
this = 全局对象
eval上下文
this = calling context.this
函数上下文
this = ?
函数调用语法:
表达式 ( );
是否是
Reference
是否是激活
对象
global object
global object
Reference.base object
Yes No
Yes No
求值
Ecma script3
Ecma script3
Ecma script3

More Related Content

What's hot

The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)jeffz
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorAdy Liu
 
所谓闭包
所谓闭包所谓闭包
所谓闭包youzitang
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术hoopchina
 
About closure
About closureAbout closure
About closureotakustay
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
GTest交流与经验总结
GTest交流与经验总结GTest交流与经验总结
GTest交流与经验总结coderzh
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题yiditushe
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Androidkoji lin
 
基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册Zhen Li
 
JavaScript 教程
JavaScript 教程JavaScript 教程
JavaScript 教程Bobby Zhou
 
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程zhangdaiping
 
检查实现类
检查实现类检查实现类
检查实现类Wu Liang
 
簡單介紹JavaScript變數範圍
簡單介紹JavaScript變數範圍簡單介紹JavaScript變數範圍
簡單介紹JavaScript變數範圍林儀泰 Tommy Lin
 
Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望jeffz
 
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1Sheng-Han Su
 
所谓闭包
所谓闭包所谓闭包
所谓闭包ilovey4
 

What's hot (20)

The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
 
所谓闭包
所谓闭包所谓闭包
所谓闭包
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
 
About closure
About closureAbout closure
About closure
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
GTest交流与经验总结
GTest交流与经验总结GTest交流与经验总结
GTest交流与经验总结
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Android
 
基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册
 
JavaScript 教程
JavaScript 教程JavaScript 教程
JavaScript 教程
 
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
 
检查实现类
检查实现类检查实现类
检查实现类
 
Node way
Node wayNode way
Node way
 
簡單介紹JavaScript變數範圍
簡單介紹JavaScript變數範圍簡單介紹JavaScript變數範圍
簡單介紹JavaScript變數範圍
 
Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望Jscex:案例、经验、阻碍、展望
Jscex:案例、经验、阻碍、展望
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1JavaScript 快速複習 2017Q1
JavaScript 快速複習 2017Q1
 
所谓闭包
所谓闭包所谓闭包
所谓闭包
 

Viewers also liked

'DOCKER' & CLOUD: ENABLERS For DEVOPS
'DOCKER' & CLOUD:  ENABLERS For DEVOPS'DOCKER' & CLOUD:  ENABLERS For DEVOPS
'DOCKER' & CLOUD: ENABLERS For DEVOPSACA IT-Solutions
 
Vállalkozz okosan profitálj biztosan
Vállalkozz okosan profitálj biztosanVállalkozz okosan profitálj biztosan
Vállalkozz okosan profitálj biztosanOrsolya Turay
 
Mole to Mole, Mole to Gram
Mole to Mole, Mole to GramMole to Mole, Mole to Gram
Mole to Mole, Mole to GramKeenan Reardon
 
Modified pushup analysis
Modified pushup analysisModified pushup analysis
Modified pushup analysisjanlee97
 
Ud1.3 parallels
Ud1.3 parallelsUd1.3 parallels
Ud1.3 parallelsJulia Mena
 
JI Pedrosas - Planificação: Alimentação
JI Pedrosas - Planificação: AlimentaçãoJI Pedrosas - Planificação: Alimentação
JI Pedrosas - Planificação: Alimentaçãomvaznunes
 
Mal-material açiqlamasi1
Mal-material açiqlamasi1Mal-material açiqlamasi1
Mal-material açiqlamasi1Elnur Ahmedov
 
Kulturne potrebe zadra – sociološko istraživanje public24042015
Kulturne potrebe zadra – sociološko istraživanje public24042015Kulturne potrebe zadra – sociološko istraživanje public24042015
Kulturne potrebe zadra – sociološko istraživanje public24042015Krešimir Krolo
 
The meadowbank experience lessons learned about gold
The meadowbank experience  lessons learned about goldThe meadowbank experience  lessons learned about gold
The meadowbank experience lessons learned about goldAgnico Eagle Mines
 

Viewers also liked (17)

Tlaxcala
TlaxcalaTlaxcala
Tlaxcala
 
'DOCKER' & CLOUD: ENABLERS For DEVOPS
'DOCKER' & CLOUD:  ENABLERS For DEVOPS'DOCKER' & CLOUD:  ENABLERS For DEVOPS
'DOCKER' & CLOUD: ENABLERS For DEVOPS
 
Portfolio
PortfolioPortfolio
Portfolio
 
Vállalkozz okosan profitálj biztosan
Vállalkozz okosan profitálj biztosanVállalkozz okosan profitálj biztosan
Vállalkozz okosan profitálj biztosan
 
Psak08
Psak08Psak08
Psak08
 
Mole to Mole, Mole to Gram
Mole to Mole, Mole to GramMole to Mole, Mole to Gram
Mole to Mole, Mole to Gram
 
Modified pushup analysis
Modified pushup analysisModified pushup analysis
Modified pushup analysis
 
Ud1.3 parallels
Ud1.3 parallelsUd1.3 parallels
Ud1.3 parallels
 
Psak16
Psak16Psak16
Psak16
 
JI Pedrosas - Planificação: Alimentação
JI Pedrosas - Planificação: AlimentaçãoJI Pedrosas - Planificação: Alimentação
JI Pedrosas - Planificação: Alimentação
 
Mal-material açiqlamasi1
Mal-material açiqlamasi1Mal-material açiqlamasi1
Mal-material açiqlamasi1
 
Re commercial-energy
Re commercial-energyRe commercial-energy
Re commercial-energy
 
Psak20
Psak20Psak20
Psak20
 
Kulturne potrebe zadra – sociološko istraživanje public24042015
Kulturne potrebe zadra – sociološko istraživanje public24042015Kulturne potrebe zadra – sociološko istraživanje public24042015
Kulturne potrebe zadra – sociološko istraživanje public24042015
 
The meadowbank experience lessons learned about gold
The meadowbank experience  lessons learned about goldThe meadowbank experience  lessons learned about gold
The meadowbank experience lessons learned about gold
 
Psak06
Psak06Psak06
Psak06
 
Psak04
Psak04Psak04
Psak04
 

Similar to Ecma script3

潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析Wu Liang
 
C程式-函式與巨集
C程式-函式與巨集C程式-函式與巨集
C程式-函式與巨集艾鍗科技
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术bigqiang zou
 
Javascript share
Javascript shareJavascript share
Javascript shareXu Mac
 
Java script closures
Java script closuresJava script closures
Java script closuresskywalker1114
 
Java script closures
Java script closuresJava script closures
Java script closuresskywalker1114
 
Js is js(程劭非) (1)
Js is js(程劭非) (1)Js is js(程劭非) (1)
Js is js(程劭非) (1)looneyren
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)Yan Li
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and nodePeter Yi
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7javatwo2011
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門吳錫修 (ShyiShiou Wu)
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四yiditushe
 
twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC
 
台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise
台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise
台南好想工作室-想知道講座-ES6 進入天堂的窄門PromiseZenChou2
 
Phpunit入门 r2
Phpunit入门 r2Phpunit入门 r2
Phpunit入门 r2Baohua Cai
 

Similar to Ecma script3 (20)

潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Scala
ScalaScala
Scala
 
Sun java
Sun javaSun java
Sun java
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析
 
C程式-函式與巨集
C程式-函式與巨集C程式-函式與巨集
C程式-函式與巨集
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术
 
Javascript share
Javascript shareJavascript share
Javascript share
 
Java script closures
Java script closuresJava script closures
Java script closures
 
Java script closures
Java script closuresJava script closures
Java script closures
 
Js is js(程劭非) (1)
Js is js(程劭非) (1)Js is js(程劭非) (1)
Js is js(程劭非) (1)
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四
 
twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹
 
台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise
台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise
台南好想工作室-想知道講座-ES6 進入天堂的窄門Promise
 
Phpunit入门 r2
Phpunit入门 r2Phpunit入门 r2
Phpunit入门 r2
 

Ecma script3