* 免责声明:我并不是说这是一个好主意——事实上我会明确地说它不是——所以通过尝试理解事件循环对编码风格的确切含义来回答这个问题。
我对 javascript-has-no-threads 口头禅的基本理解是,运行时将所有 javascript 视为短的“代码块”,它们被安排在一个接一个地执行,而在执行过程中不会从一个块转移。在这种情况下,一段代码(我不知道真正的术语)基本上是由于触发事件处理程序而运行的代码。
如果我的理解是正确的,那意味着如果您对全局变量的使用不跨越一个以上的“代码块”,那么从技术上讲,使用全局变量是 100% 安全的。
因此,例如,如果我有一个全局对象window.workspace
,我可以让我的事件处理程序和任何从那里流出的代码——而不是将临时变量存储在闭包中——将它们全部存储在window.workspace
. 只要我不假设工作区在调用事件处理程序(即使是同一个)之间保留任何状态,这应该是完全安全的。
这是准确的(虽然,再一次,不建议)