当我执行此代码时
f= function(){
let test= "hello";
let ret={
"test": "world",
"func": function(){
console.log(test);
}
}
return ret;
}
let check= f();
check.func()
我得到输出为“你好”。但我无法弄清楚为什么会这样。根据我所阅读的内容,范围链在定义期间相互堆叠,最后一个范围块附加在它们之上的运行时。那么作用域链不应该像- global -> function f -> ret Object -> function test 吗?为什么 ret 对象的成员被排除在范围链之外?是不是对象的成员不附加到范围而只是上下文的一部分?