このコードを実行すると
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 オブジェクトのメンバーがスコープ チェーンから除外されるのはなぜですか? オブジェクトのメンバーがスコープに関連付けられておらず、コンテキストの一部にすぎないようなものですか?