gpt4 book ai didi

javascript - 为什么没有 "this.function"就无法访问全局 "this."?

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:44 25 4
gpt4 key购买 nike

this.func0 = function() {
console.log('hi')
}
this.func0() // this works
func0() // but not this?

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

最佳答案

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

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

这就是你正在用你的程序做的

this.func0 = function() {
console.log('hi')
}

您正在创建一个函数对象并将其分配给当前模块的 func0 属性。

this.func0();

你正在调用当前模块的 func0

func0();

JavaScript,在当前范围内搜索 func0,然后在全局范围内搜索,但在任何地方都找不到。这就是它因 ReferenceError

而失败的原因
ReferenceError: func0 is not defined

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

global.func0 = function() {
console.log('hi')
}
func0();
// hi

关于javascript - 为什么没有 "this.function"就无法访问全局 "this."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com