我听到两种说法:
Professional Javascript for Web Developers, 3rd Edition
中,在Chapter 7: Function Expressions
关闭部分:定义compare()时,其范围链是 已创建,预加载全局变量对象,并保存到内部[[Scope]]属性。 调用该函数时,将创建一个执行上下文,并通过它构建其范围链 复制函数的[[Scope]]属性中的对象。
据说范围链是在定义了函数id 时创建的。
所以我们现在知道每次调用一个函数时,都会创建一个新的执行上下文。但是,在JavaScript解释器中,对执行上下文的每次调用都有两个阶段:
表示范围链是在调用函数时创建的。
哪个是对的?
答案 0 :(得分:0)
函数具有内部[[Scope]]属性,该属性设置为定义函数的范围,定义时。
然后,该范围是范围链的一部分,以及执行该函数时创建的新范围。