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

时间:2015-02-09 18:50:53

标签: google-apps-script

我有一个Javascript项目,其中一个脚本接收一个参数。我可以将一个参数声明为全局函数而不是将其引用到函数链中,而不是将其引用到函数链中吗?

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

var SS_SERVICE = SpreadsheetApp;

最近这开始导致错误消息。如果此更改,请在此时编辑答案。

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

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

一个文件中定义的全局变量可供其他文件访问。

您不希望将公共缓存用于特定于该用户的信息。但是有私有的Cache。并且缓存过期,因此除非用于计算用户登录时间等内容,否则您可能不想使用它。

如果您有大量代码,并且出于有序结构和访问多个其他函数的原因而创建函数,那么传递数据可能是不合需要的。所以,是的,你可以使用全局变量。一些人认为使用全局变量是“不良实践”,但随后我们开始形成个人观点。