-1

このコードを実行すると

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

4

2 に答える 2