2015-02-09 2 views
1

У меня есть проект Javascript, который один из его скриптов получает параметр. Вместо передачи этих параметров по целым целям функций я могу объявить его одним глобальным и вместо него использовать другие функции?Могу ли я использовать глобальную переменную вместо передачи параметров?

Что делать, если в проекте много скриптов? Могут ли они каким-то образом получить доступ к этой глобальной переменной? Мне нужно, чтобы он был стойким к продолжительности исполнения.

Обратите внимание, что этот проект может быть вызван различными пользователями и сразу. Поскольку он иногда вызывается через webapp, я не уверен, что кэш пользователя будет уместным.

Спасибо!

+0

Как насчет [scriptProperties] (https://developers.google.com/apps-script/reference/properties/properties-service#getScriptProperties())? – Kriggs

+0

Пожалуйста, попробуйте его перед отправкой вопроса. Показать, что не работает (потому что это так) –

+0

@Kriggs: Я использовал свойства скрипта в некоторых случаях, но хочу сохранить некоторую информацию в течение всего времени вызова только библиотеки (той, которая содержит много скриптов и функций). Было много проблем с использованием пользовательского кеша. По некоторым причинам он не был последовательным, но я не могу позволить себе отлаживать этот код, и снова он сохраняет ценность за пределами продолжительности вызова. – theworldismyoyster

ответ

2

Все скрипты приложений .gs файлы могут получить доступ ко всем другим файлам сценария .gs. Между файлами сценариев не требуется никакой связи или включение в другие файлы сценариев. Вы можете вызывать функцию из другого файла сценария, до тех пор, пока он находится в том же проекте.

И глобальные переменные, определенные в одном файле, доступны для других файлов.

Вы не хотите использовать общий кэш для информации, относящейся к этому пользователю. Но есть частный кеш. И Cache истекает, поэтому, если это не похоже на то, как долго пользователь регистрируется, вы, возможно, не захотите его использовать.

Если у вас есть много кода и создайте функции из-за упорядоченной структуры и доступа к нескольким другим функциям, то передача данных может быть нежелательной. Итак, да, вы можете использовать глобальные переменные. Некоторые считают, что «плохая практика» использует глобальные переменные, но тогда мы получаем личное мнение.

+0

Спасибо, Сэнди! Прошло очень много времени с тех пор, как я занимался программированием (почти 20 лет назад), и Javascript определенно не был языком, которым я привык и полностью знал все его причуды, но я узнал, что «нежелательно» это просто вопрос правильная дисциплина. Ваш ответ мне очень помог и поставил меня на правильный путь! Еще раз спасибо за превосходный ответ. – theworldismyoyster

+0

BTW Песчаный. Просто вопрос в отношении частного кеша. Вы имеете в виду кеш пользователя? Вы случайно не знаете, будет ли при использовании веб-браузера работать ни один эффективный пользователь или активный пользователь, если бы пользовательский кеш работал? У меня было немало проблем с этим ... Thx. – theworldismyoyster

+0

Хороший вопрос. Я не знаю. Я думаю, вы имеете в виду этот вопрос: [Переполнение стека - эффективные или активные пользователи] (http://stackoverflow.com/questions/28106133/getusercache-and-getuserproperties-are-these-for-effective-or-active-users) –

Смежные вопросы