更新:元の質問に誤った仮定があったため、質問を書き直しました(未定義と思われる変数をすでに初期化したコンソールでコードを実行していました)。
意味あり:
var obj = { 'whichScope': a };
obj.whichScope; //"ReferenceError: a is not defined"
しかし、次の例でエラーが発生しないのはなぜでしょうか? また、2 行目が最初の行の前に実行されている場合、なぜ obj.whichScope が "After" に解決されないのでしょうか?
var obj = { 'whichScope': a };
var a = "After";
obj.whichScope; //"undefined"
前の例の "var a" が obj が初期化される前に実行される場合、'a = "After";' の任意の部分を実行します。obj が初期化される前にも実行されますか?
var a = "Before";
var obj = { 'whichScope': a };
a = "After";
obj.whichScope; //"Before"
whichScope が「a」を返す関数を参照する場合、最後の例では「After」に解決されます。