我有一个Javascript项目,其中一个脚本接收一个参数。我可以将一个参数声明为全局函数而不是将其引用到函数链中,而不是将其引用到函数链中吗?
如果项目中有很多脚本怎么办?这些可以以某种方式访问此全局变量吗?我需要让它持续到执行的持续时间。
请注意,此项目可以由各种用户同时调用。由于它有时通过webapp调用,我不确定用户缓存是否合适。
谢谢!
答案 0 :(得分:3)
不要将全局变量用于Apps脚本服务。例如:
var SS_SERVICE = SpreadsheetApp;
最近这开始导致错误消息。如果此更改,请在此时编辑答案。
此外,如果您不使用var
关键字来定义变量,那么它会自动放入全局范围。因此,如果错误地将您var
放在变量前面,那么代码仍然可以运行并且可能有效,但您可能不知道代码实际发生了什么。如果您在另一个函数中定义并使用了另一个具有相同名称的变量,并且错误地将该变量设置为全局变量,并且一个函数调用另一个函数,则可能与变量值存在冲突。
所有Apps脚本.gs
文件都可以访问所有其他.gs
脚本文件。脚本文件之间不需要任何链接,也不需要包含在其他脚本文件中。您可以从另一个脚本文件 调用一个函数,只要它在同一个项目中 即可。
一个文件中定义的全局变量可供其他文件访问。
您不希望将公共缓存用于特定于该用户的信息。但是有私有的Cache。并且缓存过期,因此除非用于计算用户登录时间等内容,否则您可能不想使用它。
如果您有大量代码,并且出于有序结构和访问多个其他函数的原因而创建函数,那么传递数据可能是不合需要的。所以,是的,你可以使用全局变量。一些人认为使用全局变量是“不良实践”,但随后我们开始形成个人观点。