对不起,如果这是一个愚蠢的问题,但是这里
所以我一直在学习与Google应用程序脚本一起使用的JavaScript大约一年,但慢慢但肯定会找到我的脚。
我试图在这里帮助某人使用他们的脚本,我注意到他们宣布为
var ss = SpreadSheetApp.getActiveSpreadsheet();
在脚本的最顶部,在所有功能之外,作为全局var。
这让我想到,当我为电子表格编写几个函数/脚本时,可能值得在全球宣布某些var,而不是在不同的功能中重复它们。
在我盲目地耕作这条路之前,我认为最好问,在气体中使用全局var有任何重大陷阱或问题。
另外,除了在编码时节省一些打字外,还有什么主要优势吗?
当前有人会定期使用全局var编写加油脚本。我有兴趣听到一切工作吗?缺点是什么,任何限制或优势。
在此行下面编辑
只是想添加,我一直在做的95%的事情被限制在Google表中,并带有Lil Gmail脚本。到目前为止,这就是我的范围。认为最好提到,因为我真的没有对其他Google产品的脚本的影响。
当您使用变量定义时,例如在示例中调用Google Service,您必须意识到每次运行任何函数在您的项目中。
这意味着,即使在代码写作方面可能有效(我猜我们都是懒惰的人),在执行速度方面也不有效。
相反,让我们想象您执行一个不需要ss
变量的函数,SpreadSheetApp.getActiveSpreadsheet()
将执行...
有了一个简单的调用,这可能不是问题,但是如果您将这种情况乘以许多不同的变量调用许多不同的服务,则最终会降低您的执行速度。
我不是一个"真正的"程序员,所以我的意见仅基于个人习惯和发现,因为我从未在这方面学到任何"学术"。也许其他人会有更相关的答案。
编辑:当我键入乔纳森(Jonathon)时!我当然同意他所说的话,我将在这里离开我的帖子,只是为了效率; - )
有一个纯粹的视图和务实的视图。
务实地可能会面对
- 与您附加的任何库命名冲突潜力
- 在项目中多个脚本中定义的全球群体失去跟踪
- 变量调用API端点始终运行,无论您的脚本的实例是否需要它们。
我确实使用全球群体,但以一种稍微保守的方式来对抗这两个。
- 我创建一个单一的全局对象,该对象唯一命名,然后将任何全局var悬挂为该对象的属性。基本上是全球范围的。
- 我自己只在一个全球范围内定义全球群体。
对可变范围问题的纯粹关注点小于野外JS,因为在运行时脚本有些沙盒。但是,当您发布库时,情况并非如此。
我不像您给出的示例那样定义全球群体,但是将变量与特定的气体API绑在一起。我不知道,也许会有速度的优势,但是我倾向于将代码模式重复使用,因为功能之间的功能,并且不需要我自己在执行范围功能之外的任何代码上复制。他们还将调用这些API端点,无论您的目标功能是否需要它们=速度罚款。
Globals对我来说只是真正的脚本项目特定变量和实用程序功能。通常,它们可能是脚本属性的调用。