为什么vscode print" undefined"结果

时间:2017-05-01 06:21:23

标签: javascript visual-studio-code

我认为控制台应该为我返回34,但我得到了#34;未定义"在vscode ide。

enter image description here

我在Chrome中运行以下代码,然后我得到了34。

enter image description here

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

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

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

    var bar = obj.foo;

    var a = 34;

    bar();

由于

2 个答案:

答案 0 :(得分:2)

正如我测试过,如下图所示

Chrome调试器中的

this引用window但在VSCode中它是一个具有一些符号的对象(例如变量名称)

所以主要原因是VSCode调试器与Chrome之间存在差异。

在VSCode中: enter image description here

在Chrome中:enter image description here

答案 1 :(得分:0)

输出为34的原因在于究竟是什么

实际上它是因为bar指向全局函数foo

最后,当您致电bar()时,您实际上并未拨打obj.foo(),而是拨打全球foo。在JavaScript中,this值仅在您调用函数时定义,this是您调用函数的上下文,在本例中为window和{ {1}}指向34。

您的设置没有任何问题。

随意阅读这篇精彩的文章,并留下您的评论! How does the "this" keyword work?