Рассмотрим следующий script:
if (false) {
function foo() {
alert("FOO");
}
}
foo(); // alerts "FOO"
Как вы можете видеть, функция foo
определена и работает даже при условии, что условие для if
терпит неудачу.
Причина, по которой я хочу сделать это, заключается в том, что я разрабатываю расширение для InDesign, и я создал script, называемый utilities.jsx, который содержит различные функции, которые используются в других скриптах. Во всех скриптах, которые нуждаются в этих функциях, я просто использую:
app.doScript(File(scriptsFile.parent.fsName + "/t_utilities.jsx"), ScriptLanguage.JAVASCRIPT);
который определяет все функции, которые мне нужны, а затем я могу их использовать. Теперь, поскольку этот script будет вызываться несколько раз различными файлами в непредсказуемом порядке (пользователь решает), я думал, что могу определить функции, если они еще не определены (если utilities.jsx не запущен все же). Вид вроде require_once
в php.
Я думал о чем-то вроде следующего, но это не работает, поскольку функции определяются каждый раз при запуске script: `
var utilitiesHasRun;
if (utilitiesHasRun !== true) {
// define all the functions
// ...
utilitiesHasRun = true;
}
Есть ли другие варианты?