javascript - 在 GAS 中使用全局变量是否可取?有什么缺点吗?

标签 javascript google-apps-script google-sheets global-variables

对不起,如果这是一个愚蠢的问题,但是这里是

因此,我已经学习 Javascript 以与 Google 应用程序脚本一起使用大约一年了,慢慢地但肯定会找到我的立足点。

我试图帮助某人处理这里的脚本,我注意到他们声明

var ss = SpreadSheetApp.getActiveSpreadsheet();

在脚本的最顶部,在所有函数之外,作为全局变量。

这让我想到,当我为电子表格编写多个函数/脚本时,可能值得在全局范围内声明一些 VAR,而不是在不同的函数中重复它们。

在我盲目地走这条路之前,我认为最好先问问在 GAS 中使用全局变量是否存在任何重大陷阱或问题。

此外,除了在编码时节省一些输入之外,还有什么主要优势吗?

目前是否有人经常使用全局变量编写 GAS 脚本。我很想知道这一切是如何运作的?有什么缺点、任何限制或优点。

在此行下方编辑

只是想补充一点,我一直在做的 95% 的事情都局限于 Google 表格,以及极小的 gmail 脚本。到目前为止,这就是我的范围。我认为最好提一下,因为我并没有真正考虑到脚本对其他 Google 产品的影响。

最佳答案

当您使用调用 Google 服务的示例中的变量定义时,您必须意识到每次您在项目中运行任何函数时都会执行此调用。

这意味着即使它在代码编写方面可能是高效的(我猜我们都是懒惰的家伙),但在执行速度方面确实效率不高。

相反,假设您执行一个不需要ss 变量的函数,SpreadSheetApp.getActiveSpreadsheet() 将被执行...

通过像这样的简单调用,这可能不是问题,但如果您将这种情况乘以调用许多不同服务的大量不同变量,最终会降低您的执行速度。

我不是“真正的”程序员,所以我的意见仅基于个人习惯和发现,因为我从未在这方面学到任何“学术”知识。也许其他人会有更相关的答案。

编辑:当我在打字时,Jonathon 刚刚做到了!我当然同意他所说的,我会把我的帖子留在这里只是为了提高效率;-)

关于javascript - 在 GAS 中使用全局变量是否可取?有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30013661/

相关文章:

javascript - 如何使用 gulp 复制文件并将其移动到父文件夹?

javascript - Mocha 说assert.equal([0, 0], [0, 0]) 失败。为什么?

validation - 提交前的表单验证

javascript - Google Apps 脚本 - UiApp ServerHandler 回调函数 - 值未定义

java - 如何使用 Android Google Spreadsheet API 创建列表范围验证

javascript - VueJS - 变量已定义但从未使用过(将数据发送到 Firebase)

javascript - cubism.js 中的 serverDelay 是做什么的?

javascript - 解构数组

google-apps-script - Google Apps 脚本 - 如何在 onFormSubmit (Google Forms 事件)中获取目标电子表格中的相应记录?

google-sheets - 如何返回 Google 文档电子表格中文本值范围内最常出现的文本值?