Javascript 为什么是全球性的;这是“功能”;如果没有“的话,就无法访问”;这是什么;?

Javascript 为什么是全球性的;这是“功能”;如果没有“的话,就无法访问”;这是什么;?,javascript,node.js,Javascript,Node.js,为什么func0()不工作? this.f()和justf()都应该访问全局对象吗?这里要了解的重要一点是,在Node.js中,每个JavaScript文件都将被视为一个单独的模块 因此,在JavaScript文件中,此将引用当前模块对象,而不是全局对象。我们在Node.js中有一个叫做object的东西,它有点类似于浏览器的windowobject 这就是你对你的程序所做的 this.func0 = function() { console.log('hi') } this.func0(

为什么
func0()
不工作?
this.f()
和just
f()
都应该访问全局对象吗?

这里要了解的重要一点是,在Node.js中,每个JavaScript文件都将被视为一个单独的模块

因此,在JavaScript文件中,
将引用当前模块对象,而不是
全局
对象。我们在Node.js中有一个叫做object的东西,它有点类似于浏览器的
window
object

这就是你对你的程序所做的

this.func0 = function() {
   console.log('hi')
}
this.func0() // this works
func0() // but not this?
您正在创建函数对象并将其分配给当前模块的
func0
属性

this.func0 = function() {
   console.log('hi')
}
您正在调用当前模块的
func0

this.func0();
JavaScript,在当前范围内搜索
func0
,然后在全局范围内搜索,但在任何地方都找不到它。这就是为什么它会出现
ReferenceError

func0();
如果你真的想在全局范围内设置,那么你应该这样做

ReferenceError: func0 is not defined

您运行此代码的环境是什么?在chrome控制台中对我有效…所以有时全局不是全局的?我在节点上尝试了此操作,结果与预期的一样。(命令提示符0.8.15)我有一个确切的代码,我将其发布为文件
test.js
.js的上下文,然后我键入
node test.js
并获取未定义的
func0
(node-v0.10.26)
global.func0 = function() {
   console.log('hi')
}
func0();
// hi