`

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里的对象的属性。

其他内容,以后再补充。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics