2015-02-09 116 views
1

我有一個Javascript項目,其中一個腳本接收參數。而不是在整個函數鏈中傳遞這個參數,我可以把它聲明爲全局的,並且有其他的函數來引用它嗎?我可以使用全局變量而不是傳遞參數嗎?

如果項目中有很多腳本,該怎麼辦?它們能以某種方式訪問​​這個全局變量嗎?我只需要在執行期間持續執行它。

請注意,該項目可以由各種用戶和一次調用。由於它有時通過webapp調用,我不確定用戶緩存是否合適。

謝謝!

+0

[scriptProperties](https://developers.google.com/apps-script/reference/properties/properties-service#getScriptProperties())呢? – Kriggs 2015-02-09 19:14:08

+0

請在發佈之前嘗試該問題。顯示什麼不工作(因爲它) – 2015-02-09 20:02:27

+0

@Kriggs:我一直在使用腳本屬性在某些場合,但我想保留一些信息的持續時間只對庫(包含許多腳本和函數)的調用。使用用戶緩存有許多問題。由於某些原因,它並不一致,但我無法調試該代碼,並且再次保持超出通話期限的價值。 – theworldismyoyster 2015-02-10 07:33:33

回答

2

所有應用程序腳本.gs文件可以訪問所有其他.gs腳本文件。腳本文件之間不需要有任何鏈接,或者包含在其他腳本文件中。只要它在同一個項目中,您可以從另一個腳本文件調用一個函數。

而在一個文件中定義的全局變量可以被其他文件訪問。

您不想使用公共緩存來獲取特定於該用戶的信息。但有私人緩存。並且緩存過期,所以除非用戶計時多久才能登錄,否則您可能不想使用它。

如果您有很多代碼,並且出於結構有序和訪問多個其他功能的原因而創建函數,那麼傳遞數據可能不合需要。所以,是的,你可以使用全局變量。一些人認爲它使用全局變量被認爲是「不好的做法」,但後來我們開始接受個人意見。

+0

謝謝桑迪!自從我編程(近20年前)以來,它已經有很長的一段時間了,Javascript絕對不是我習慣的語言,並且完全瞭解它的所有怪癖,但我已經知道什麼是「不可取的」,它只是一個問題。適當的紀律。你的回答幫助了我很多,並使我走上正軌!再次感謝一個非常好的答案。 – theworldismyoyster 2015-02-10 07:30:06

+0

順便說一句桑迪。只是關於私有緩存的問題。你指的是用戶緩存嗎?你碰巧知道在使用web應用程序時,無論有效用戶還是活動用戶都不會返回用戶緩存的值嗎?我有很多挑戰...... Thx。 – theworldismyoyster 2015-02-10 07:35:49

+0

好問題。我不知道。我想你是指這個問題:[堆棧溢出 - 有效或活躍用戶](http://stackoverflow.com/questions/28106133/getusercache-and-getuserproperties-are-these-for-effective-or-active-users ) – 2015-02-10 15:32:38

相關問題