我可以使用全局变量而不是传递参数吗?

Can I use global variable instead of passing parameters?

我有一个 Javascript 项目,其中一个脚本接收一个参数。我可以将它声明为全局参数,而不是在整个函数链中传递这个参数,而让其他函数引用它吗?

如果项目中的脚本很多怎么办?这些可以以某种方式访问​​这个全局变量吗?我只需要让它持续到执行期间。

请注意,此项目可以同时被多个用户调用。由于有时会通过 webapp 调用它,因此我不确定用户缓存是否合适。

谢谢!

不要将全局变量用于 Apps 脚本服务。例如:

var SS_SERVICE = SpreadsheetApp;

最近这开始导致错误消息。如果这有变化,请当时编辑答案。

此外,如果您不使用 var 关键字来定义变量,那么它会自动进入全局范围。因此,如果您错误地没有将 var 放在变量前面,那么代码仍然可以运行并且可以正常工作,但您可能不知道您的代码真正发生了什么。如果您在不同的函数中定义并使用了另一个同名变量,并且还错误地将该变量设置为全局变量,并且一个函数调用了另一个函数,则可能会与变量值发生冲突。

所有 Apps 脚本 .gs 文件可以访问所有其他 .gs 脚本文件。脚本文件之间不需要任何 link,也不需要包含在其他脚本文件中。您可以从另一个脚本文件 调用函数,只要它在同一项目中

并且在一个文件中定义的全局变量可以被其他文件访问。

您不想使用 public 缓存来获取特定于该用户的信息。但是有私有Cache。并且缓存会过期,因此除非是为了计时用户登录的时间,否则您可能不想使用它。

如果您有很多代码,并且出于有序结构和访问多个其他函数的原因而创建函数,那么可能不需要传递数据。所以,是的,您可以使用全局变量。一些人认为 "Bad Practice" 使用全局变量,但后来我们进入个人意见。