var obj={
say: function(){
console.log(obj); // undefined
}()
};
Наконец, выводится undefined
. И я начал объяснять это, используя знание контекста выполнения, но у меня возникли сомнения относительно того, когда метод создается в контексте.
Я знаю, что послевходя в контекст, мы сначала вступаем в фазу создания и имеем переменный объект, который включает объявления переменных и функций. Далее мы входим в фазу выполнения и заканчиваем присваивание переменных и функций. Так что в этом примере мы:
Сначала введите фазу создания глобального контекста исключения, и obj
будет undefined
.Затем, после фазы создания, мы входим в фазу выполнения. Коды начинают извиняться, и obj
теперь указывает на объект. Однако, в процессе выше, когда создается метод say
? Во время фазы создания глобальнойФаза выполнения или выполнения глобального выполнения?
(Если на этапе создания объект переменной глобального контекста выполнения должен иметь вид AO={ obj:undefined,say: referencce to <function>}
)
Или есть ли лучший способобъяснить, почему здесь результат undefined
?Я искал в Интернете и видел, что кто-то сказал, что это потому, что поднимал. Это правильно?