execution context、scope chain、call object等等

重读犀牛书,很多以前没概念的东西,都有点感觉了。重读书真是一种乐趣呀。

这次看到execution context、scope chain、call object的概念,感觉还是理解得不太透彻,不过先简要总结一下。

1.每个函数执行的时候,都会有一个execution context,即执行上下文。不在function内的代码(姑且称作全局代码)执行时,有个global上下文;function中的代码执行时,也有独立的执行上下文。

2.每个执行上下文都关联一个scope chain,这个scope chain是包含一个或者多个对象的链。对于在function外执行的代码,它的scope chain上只有一个全局对象(global object)。无嵌套函数的scope chain上有2个对象,第一个是该函数的call object(调用对象),第二个才是global object。如果是一个function内的嵌套函数,那么chain上就有3个对象了。

3.所有全局变量和function,都是global object的属性。然后function的参数和局部变量是call object的属性。嵌套函数的参数和局部变量,是嵌套的call object的属性。(这个call object是scope chain的第一个对象,第2个对象是外层的call object,然后才轮到global object)

4.所以外层function是访问不到嵌套function的局部变量的,因为它的scope chain上只有它自己的call object和global object,而嵌套function的局部变量,是内层call object的属性,所以在外层是访问不到的。总结:function只能找到在scope chain里的对象的属性。

其他内容,以后再补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值