【发布时间】:2016-03-31 14:35:34
【问题描述】:
我正在学习 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
当我尝试在 Google Chrome 控制台上运行时,这在 cmets 中按预期工作。但我正在研究 Webstorm,我意识到 foo();返回未定义。可能是 foo();不是从全局调用的,但为什么这在 Webstorm 上会这样工作。 ECMAscript 是 5.1,我更改并尝试了不同的版本,但结果是一样的。感谢您的帮助。
Webstorm 控制台结果;
undefined
bar2
bar3
【问题讨论】:
-
在浏览器的第一种情况下,这是指窗口,因为
var bar是在全局上下文中定义的,它属于window,这在你的IDE中可能不是这样。 -
foo只返回undefined。没有return声明。您的意思是说 Chrome 打印到控制台而 Webstorm 不打印? -
@zvone 不,它与控制台无关。我从答案中了解到 node.js 文件有自己的模块,所以 var bar = .. 等属于本地模块范围。这就是为什么我会得到不同的结果。
标签: javascript webstorm