考虑以下脚本:
if (false) {
function foo() {
alert("FOO");
}
}
foo(); // alerts "FOO"
如您所见,foo
即使条件if
失败,该函数也已定义并有效。
我想这样做的原因是我正在为 InDesign 开发一个扩展,并且我制作了一个名为 utility.jsx 的脚本,其中包含在其他脚本中使用的各种功能。在所有需要这些功能的脚本中,我简单地使用:
app.doScript(File(scriptsFile.parent.fsName + "/t_utilities.jsx"), ScriptLanguage.JAVASCRIPT);
它定义了我需要的所有功能,然后我可以使用它们。现在,由于这个脚本将被各种文件以不可预知的顺序(用户决定)多次调用,我想我可能只定义以前没有定义过的函数(如果实用程序.jsx 还没有运行) . 有点像require_once
在php中。
我正在考虑类似以下的内容,但这不起作用,因为每次运行脚本时都会定义函数:`
var utilitiesHasRun;
if (utilitiesHasRun !== true) {
// define all the functions
// ...
utilitiesHasRun = true;
}
还有其他选择吗?