我应该使用self或window来引用全局范围吗?

Ric*_*ers 5 javascript coding-style web-worker

作为一种样式约定,我喜欢在我访问全局范围中的变量时明确,更喜欢

window.example = "Hello";
window.alert(window.example);
Run Code Online (Sandbox Code Playgroud)

更不那么冗长

example = "Hello";
alert(example);
Run Code Online (Sandbox Code Playgroud)

我现在有一个可以直接从浏览器使用的模块,或者,如果它们可用,则来自Web工作者.在Web worker中调用全局对象self,而在浏览器中调用它window.

window对象具有自我属性,因此self.example = "Hello"可以在两个上下文中工作,只要没有一个重新声明self(因为它们经常这样做:var self = this).

什么是最好的约定?

  • 使用self并希望没有人宣称存在冲突self.
  • 如果window已定义,请使用window,否则使用self.
  • 别的什么?

想到这一点,我倾向于选择第二个.

Poi*_*nty 7

在全局范围内,无论是在页面还是Web工作者中,您都可以编写如下代码:

(function( global ) {
  // ... whatever
}( this );
Run Code Online (Sandbox Code Playgroud)

然后在主外部函数内部,你可以使用"global"(或称之为"window"或"self"或"whatever"),它可以在任何一个上下文中工作(或者在Node.js中工作).