代码的javascript输出示例
我是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
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
也许您可以自己尝试?您不需要社区来尝试该代码,您可以自己来做。也许您可以自己来尝试?您不需要社区来尝试这段代码,你可以自己做。