更新:重寫問題,因爲原來的問題有錯誤的假設(我在一個控制檯中運行代碼,已經初始化了我認爲未定義的變量)。JavaScript:初始化對象後初始化內部變量
這是有道理的:
var obj = { 'whichScope': a };
obj.whichScope; //"ReferenceError: a is not defined"
但後來怎麼會在下一個例子不會拋出一個錯誤?如果第二行在第一行之前運行,爲什麼obj.whichScope沒有解析爲「After」?
var obj = { 'whichScope': a };
var a = "After";
obj.whichScope; //"undefined"
如果obj初始化之前「VAR一」在前面的例子中運行時,確實的任何部分「A =‘後’;」在obj被初始化之前也運行?
var a = "Before";
var obj = { 'whichScope': a };
a = "After";
obj.whichScope; //"Before"
如果whichScope引用返回'a'的函數,那麼它在上一個例子中確實解析爲「After」。