javascript 为什么vscode会输出“undefined”作为结果

xdyibdwo  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(211)

我认为控制台应该为我返回34,但我在vscode ide中得到了“undefined”。

我在chrome中运行下面的代码,然后我得到了34。

我想知道原因,如果我的设置是原因,我应该如何修改设置?

function foo() {
        console.log( this.a );
    }

    var obj = {
        a: 2,
        foo: foo
    };

    var bar = obj.foo;

    var a = 34;

    bar();

谢谢

kuhbmx9i

kuhbmx9i1#

正如我已经测试和下面的图片可以显示
Chrome调试器中的this引用了window,但在VSCode中,它是一个具有一些符号的对象(例如变量名称)
所以主要原因是VSCode调试器和Chrome之间的差异行为。
在VSCode中:

在Chrome浏览器中:

mnemlml8

mnemlml82#

输出为34的原因在于bar到底是什么
实际上是因为bar指向全局函数foo
最后,当你调用bar()时,你实际上并没有调用obj.foo(),而是调用全局foo。在JavaScript中,this值只有在你调用函数时才被定义,this是你调用函数的上下文,在这个例子中,是windowwindow.a指向34。
你的设置没有问题。
欢迎阅读这篇精彩的文章,并在下面留下您的评论!How does the "this" keyword work?

相关问题