词法作用域
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
在 JavaScript 中,函数对象的创建和函数本身的执行是完全不同的两个过程:
function func(){
var x = 0;
print("function func");
}
是为函数的创建,而下面这条语句:
func();
才是函数的执行。
所谓词法作用域(静态作用域)是指,在函数对象的创建时,作用域”[[scope]]”就已经建立, 而并非到执行时,因为函数创建后可能永远不会被执行,但是作用域是始终存在的。
比如在上例中,如果在程序中使用没有调用 func(),那么,func 对象仍旧是存在的,在内存的结构可能是这样的:
func.["[[scope]]"] = global.["variable object"];
而当函数执行时,进入函数执行期上下文,函数的活动对象被创建,此时的作用域链是活动对象和”[[scope]]”属性的合成。
在线练习
{$ activeFileHint $}