【问题标题】:Why this.bar returns a different result on webstorm ? [duplicate]为什么 this.bar 在 webstorm 上返回不同的结果? [复制]
【发布时间】: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


【解决方案1】:

如果您不执行客户端 JS,WebStorm 正在使用 node.js。该代码的行为在here 进行了解释。

【讨论】:

    猜你喜欢
    • 2021-09-03
    • 2012-07-28
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2017-04-01
    • 2020-08-10
    • 2020-11-20
    相关资源
    最近更新 更多