Javascript 为什么这个.bar在webstorm上返回不同的结果?
我正在学习Javascript,目前正在观看关于它的讲座。像这样的讲座中的一个例子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控制
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=。。等属于本地模块范围。这就是为什么我会得到不同的结果。