我认为控制台应该为我返回34,但我得到了#34;未定义"在vscode ide。
我在Chrome中运行以下代码,然后我得到了34。
我想知道原因,如果我的设置是原因,我应该如何修改设置?
function foo() {
console.log( this.a );
}
var obj = {
a: 2,
foo: foo
};
var bar = obj.foo;
var a = 34;
bar();
由于
答案 0 :(得分:2)
正如我测试过,如下图所示
Chrome调试器中的 this
引用window
但在VSCode中它是一个具有一些符号的对象(例如变量名称)
所以主要原因是VSCode调试器与Chrome之间存在差异。
答案 1 :(得分:0)
输出为34的原因在于究竟是什么
实际上它是因为bar
指向全局函数foo
最后,当您致电bar()
时,您实际上并未拨打obj.foo()
,而是拨打全球foo
。在JavaScript中,this
值仅在您调用函数时定义,this
是您调用函数的上下文,在本例中为window
和{ {1}}指向34。
您的设置没有任何问题。
随意阅读这篇精彩的文章,并留下您的评论! How does the "this" keyword work?