1

我使用 Google Apps 脚本制作的插件有一堆变量,大约 60 个,用于 5 个不同的函数。所以这些变量在逻辑上必须是全局的。

然而,60 个变量中有 20 个需要ScriptApp.AuthModeNONE 以外的其他变量。我不想将它们复制粘贴到所有 5 个函数中,并且希望它们保持全局性,但是在尚未授予授权的情况下它们会导致脚本失败。

在这种情况下,让函数可以访问这些变量而不是完全全局的最佳实践是什么?

正如亚当 H 所指出的,这个问题非常广泛,所以我会更具体:

  1. 将全局变量放在 if 语句中
  2. 添加返回这些变量的函数
  3. 将它们从全局移动到需要它们的每个功能

哪个是最好的?

4

2 回答 2

1

正确的方法应该是:

选项 2:添加返回这些变量的函数

原因:

  • 使用函数,您可以具有可重用性。将来如果一个变量需要改变它的值,那么你只需要在一个地方进行改变。

  • 我们不能使用选项 3,因为它会一次又一次地不必要地添加相同的代码。

  • 我们不能使用选项 1 并将变量保留为全局变量,因为这可以允许在一个变量中覆盖变量的值。

笔记:

甚至该函数也可以用烤箱编写,因此使用 js 闭包来保存您的变量,以免被不良来源或钩子更新。

于 2018-08-13T21:52:29.447 回答
-1

这是一个基于意见的主题,但这是我会做的,把它当作它的价值。

// create your namespace
var myApp = (function() {
  // variables that are local to your app
  let myVariable;

  // functions that are exposed by your app
  return {
    myFunction: function() {
      // you can reference all the variables defined above here
      return myVariable;
    },
    // your initialization function (or a poor mans constructor)
    init: function(varValue) {
      // store the values passed in here
      myVariable = varValue;
    }
  };

})();

// Init your app with your variables
myApp.init('Random Value');

// Now you just call your functions
console.log(myApp.myFunction())

于 2018-08-13T21:50:24.333 回答