这个问题最近一直困扰着我,我感到自己无法理解Function对象的本质是什么。如果说是一个普通的js变量。比如vara=5;我可以把它理解为开辟了某个内存给变量a,并把内容赋值为5。那么如果我定义了一个函数:varfn=function(){console.log(this);};它在内存中又是怎么存储的?其实把我的问题再具体话一点,可以这样问:1.Function对象中如何保存作用域链的上下文(context)2.Function对象的函数体是以字符串的形式存储下来的吗?再看看下面这个例子:varfn;(function(){vara=5;fn=function(){console.log(a++);};})();fn();这是个常见的闭包例子,就拿这个例子来说,Function对象是如何把变量a保存在自己的上下文环境中的呢?首先感谢大家热情的回答,我再补充说明一下:我主要的问题是Function在解释器引擎(比如GoogleV8)里是以怎样的形式实现的?是把函数体以字符串的形式存储下来,并在执行时以类似eval方法来调用它,或者还是其他方式?所以我的实际问题可能比较底层一点。
繁花不似锦
相关分类