Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要打印vscode;“未定义”;结果_Javascript_Visual Studio Code - Fatal编程技术网

Javascript 为什么要打印vscode;“未定义”;结果

Javascript 为什么要打印vscode;“未定义”;结果,javascript,visual-studio-code,Javascript,Visual Studio Code,我认为控制台应该为我返回34,但我在vscode ide中得到了“未定义” 我在chrome中运行了以下代码,然后得到了34 我想知道为什么,如果我的设置是原因,我应该如何修改设置 function foo() { console.log( this.a ); } var obj = { a: 2, foo: foo }; var bar = obj.foo; var a = 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();

谢谢

输出为34的原因在于条形图到底是什么

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

最后,当您调用
bar()
时,实际上并不是调用
obj.foo()
,而是调用全局
foo
。在JavaScript中,
this
值仅在调用函数时定义,
this
是调用函数的上下文,在本例中是
窗口和
窗口。a
指向34

你的设置没有问题

请随意阅读这篇精彩的文章,并在下面留下您的评论!
输出为34的原因在于条形图的确切含义

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

最后,当您调用
bar()
时,实际上并不是调用
obj.foo()
,而是调用全局
foo
。在JavaScript中,
this
值仅在调用函数时定义,
this
是调用函数的上下文,在本例中是
窗口和
窗口。a
指向34

你的设置没有问题

请随意阅读这篇精彩的文章,并在下面留下您的评论!

正如我测试过的和下面的图片所示

在Chrome调试器中指的是
窗口
,但在VSCode中,它可能是一个带有符号的对象(例如变量名称)

因此,主要原因是VSCode调试器和Chrome之间的行为差异

在VSCode中:


在Chrome中:

正如我测试过的和下面的图片所示

在Chrome调试器中指的是
窗口
,但在VSCode中,它可能是一个带有符号的对象(例如变量名称)

因此,主要原因是VSCode调试器和Chrome之间的行为差异

在VSCode中:


在Chrome中:

可能重复我知道“this”的机制,我只是尝试在vscode中写一个简单的例子。我也知道结果。但我在vscode中没有得到,所以我只是问这个问题,是关于vscode而不是js。是的,我把函数foo放在foo的属性中,把obj.foo放在变量“bar”中,然后我调用了“bar”在最后一行的代码片段中。可能重复我知道“this”的机制,我只是试着在vscode中写一个简单的例子。我也知道结果。但我在vscode中没有得到,所以我只是问这个问题,是关于vscode而不是js。是的,我把函数foo放在foo的属性中,把obj.foo放在变量“bar”中,我在代码段的最后一行调用了“bar”。那么你能解释一下为什么上面的代码段在vscode中打印为“undefined”吗?@ShawnLi the
undefined
是全局函数
foo
的返回值,因为它什么也不返回。谢谢,我认为取消定义是函数打印的结果。但是我在vscode中找不到正确的结果。这太奇怪了。对不起,我刚刚更改了代码,当我删除“this”关键字时,控制台显示“34”,它不是返回值。那么你能解释一下为什么vscode中的上述代码段打印为“undefined”吗?@ShawnLi
undefined
是全局函数
foo
的返回值,因为它不返回任何内容。谢谢,我认为未定义是函数打印的结果。但是我在vscode中找不到正确的结果。太奇怪了。对不起,我刚更改了代码,当我删除“this”关键字时,控制台显示“34”,这不是回报值是的,你是对的。我刚刚意识到这个问题。非常感谢你解决了我的问题。是的,你是对的。我刚刚意识到这个问题。非常感谢你解决了我的问题。