Кто-нибудь может сказать, почему глобальная область не применима в следующем случае? Почему строка № 6 печатает undefined? Разве внешнее «это» не должно быть доступно во внутренней самовыполняющейся функции?
var myObj = {
test1 : 4,
func : function(){
console.log(this.test1); //prints 4
(function(){
console.log("From self-executing function : " + this.test1); //prints undefined
})();
}
};
myObj.func();
Где, как в следующем случае, глобальная область работает нормально. test1, объявленный во внешней области видимости, прекрасно доступен во внутренней функции.
var test1 = 10;
(function(){
console.log("From self-executing function : " + test1); //prints 10
})();
Может ли кто-нибудь объяснить, что мне здесь не хватает, чтобы понять?
console.log(this)
посмотреть значениеthis
что такое - person FZs   schedule 20.01.2019func
myObj
, поэтомуthis
являетсяmyObj
вfunc
. Вы вызываете внутреннюю функцию ни для чего, и она не привязана, поэтому во внутренней функцииthis
является глобальным объектомwindow
в нестрогом режиме илиundefined
в строгом режиме. - person Paul-Louis Ageneau   schedule 20.01.2019