1

在交互式 nodejs 控制台中:

> var a = 1;
> console.log(a);
1
> console.log(this.a);
1

所以我认为

a === this.a

但是当我将它保存在一个 JS 文件中并执行它时,我得到了不同的响应:

1 
undefined

为什么this.a现在是未定义的?

4

1 回答 1

1

当您从控制台执行节点时,“this”指的是控制台的全局范围。所以'a'会自动添加到全局中,就像在浏览器中以类似的方式声明一个变量会将'a'添加到window,即window.a

从脚本执行时,“this”是一个对象。变量不会以相同的方式添加到全局范围。为什么,我不知道。但这似乎正在发生。

于 2012-10-09T07:23:21.227 回答