代码的javascript输出示例

代码的javascript输出示例,javascript,Javascript,我是javascript新手,想知道代码的输出是什么: var myObject = { foo: "bar", func: function() { var self = this; console.log("outer func: this.foo = " + this.foo); console.log("outer func: self.foo = " + self.foo); (function() { console

我是javascript新手,想知道代码的输出是什么:

var myObject = {
    foo: "bar",
    func: function() {
    var self = this;
    console.log("outer func:  this.foo = " + this.foo);
    console.log("outer func:  self.foo = " + self.foo);
    (function() {
        console.log("inner func:  this.foo = " + this.foo);
        console.log("inner func:  self.foo = " + self.foo);
    }());
    }
};

还不确定foo是如何工作的。

Javascript中的每个函数调用都会根据调用函数的方式重置
this
的值(有关控制
this
的五种方法,请参阅)

因此,当您使用IIFE结构
(function(){…})(
这只是一个普通的函数调用时,
this
的值会重置为
窗口
对象,或者如果在严格模式下运行,则重置为
未定义的

因此,如果您不是在
strict
模式下运行,则内部函数中的
this.foo
引用将尝试访问
window.foo
,这可能是
未定义的

当然,当我在中运行此命令并实际调用
myObject.func()
时,控制台显示:

outer func:  this.foo = bar
outer func:  self.foo = bar
inner func:  this.foo = undefined
inner func:  self.foo = bar
另一个
console.log()
语句确认在内部func
中,this==window
当然,
window.foo
未定义的



如果您这样做,那么调用
myObject.func()
将生成此错误
Uncaught TypeError:无法读取undefined的属性'foo',因为在内部func中,
this===undefined

Javascript中的每个函数调用都会根据调用函数的方式重置
this
的值(有关控制此
的五种方法,请参阅)

因此,当您使用IIFE结构
(function(){…})(
这只是一个普通的函数调用时,
this
的值会重置为
窗口
对象,或者如果在严格模式下运行,则重置为
未定义的

因此,如果您不是在
strict
模式下运行,则内部函数中的
this.foo
引用将尝试访问
window.foo
,这可能是
未定义的

当然,当我在中运行此命令并实际调用
myObject.func()
时,控制台显示:

outer func:  this.foo = bar
outer func:  self.foo = bar
inner func:  this.foo = undefined
inner func:  self.foo = bar
另一个
console.log()
语句确认在内部func
中,this==window
当然,
window.foo
未定义的



如果需要,则调用
myObject.func()
将生成此错误
未捕获类型错误:无法读取未定义的属性“foo”
因为在内部函数中,
this===undefined

也许您可以自己尝试?您不需要社区来尝试该代码,您可以自己来做。也许您可以自己来尝试?您不需要社区来尝试这段代码,你可以自己做。