var scope ="global";functioncheckScope(){var scope ="local";returnnewFunction("return scope;");}
console.log(checkScope()());//global
动态作用域 (动态性)
由调用位置决定,不关心变量和函数定义的书写位置
[[scope]]
虚拟属性,无法访问和修改
函数创建时生成的属性,保存着这个函数所有父级执行上下文环境中的变量对象的集合
//复制后的函数与复制前的函数引用的是同一个 [ [ scope ] ] 属性var x =10;functionfoo(){
console.log(x);}foo();// 10functionfun(){var x =20;var foo1 = foo;foo1();// 10}fun();
内存空间管理
若函数里面有两个对象,也是一个内存块
var fun1, fun2;functionfoo(){var x =10;//在全局生成的,生成以后不释放fun1=function(){
console.log(++x);};fun2=function(){
console.log(--x);};}foo();fun1();// 11fun1();// 12fun2();// 11fun2();//10foo();fun1();//11```