Javascript 为什么这个.bar在webstorm上返回不同的结果?

Javascript 为什么这个.bar在webstorm上返回不同的结果?,javascript,webstorm,Javascript,Webstorm,我正在学习Javascript,目前正在观看关于它的讲座。像这样的讲座中的一个例子 function foo(){ console.log(this.bar); } var bar = "bar1"; var o2 = { bar: "bar2", foo: foo}; var o3 = { bar: "bar3", foo: foo}; foo(); // bar1 o2.foo(); // bar2 o3.foo(); // bar3 当我尝试在谷歌Chrome控制

我正在学习Javascript,目前正在观看关于它的讲座。像这样的讲座中的一个例子

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

var bar = "bar1";
var o2 = { bar: "bar2", foo: foo};
var o3 = { bar: "bar3", foo: foo};

foo();     // bar1
o2.foo();  // bar2
o3.foo();  // bar3
当我尝试在谷歌Chrome控制台上运行时,这是我在评论中的预期工作。但我正在研究Webstorm,我意识到了foo();返回未定义的。它可能是foo();没有从全球呼叫,但为什么在Webstorm上这样工作。ECMAscript是5.1,我更改并尝试了不同的版本,但结果是一样的。谢谢你的帮助

Webstorm控制台结果

undefined
bar2
bar3

如果您没有执行客户端JS,WebStorm将使用node.JS。这段代码的行为将得到解释。

如果您没有执行客户端JS,WebStorm将使用node.JS。该代码的行为已被解释。

在浏览器中的第一种情况下,它指的是窗口,而
var bar
是在全局上下文中定义的,它属于
window
在IDE中可能不是这种情况。
foo
只返回
未定义的
。没有
return
语句。你的意思是说Chrome打印到控制台而Webstorm不打印吗?@zvone不,它与控制台无关。我从回答中了解到node.js文件有自己的模块,所以var bar=。。等属于本地模块范围。这就是为什么我会得到不同的结果。在浏览器中的第一种情况下,这指的是窗口,因为
var bar
是在全局上下文中定义的,它属于
window
在IDE中可能不是这样。
foo
只返回
未定义的
。没有
return
语句。你的意思是说Chrome打印到控制台而Webstorm不打印吗?@zvone不,它与控制台无关。我从回答中了解到node.js文件有自己的模块,所以var bar=。。等属于本地模块范围。这就是为什么我会得到不同的结果。