Warum ist es wichtig den Großteil des Scripts in eine main()-Funktion einzuklammern?
die ich hier beantworten möchte:
Während in manch anderen Programmiersprachen die main()-Funktion als Einsprungpunkt zwingend vorgeschrieben ist, kann man in JavaScript für InDesign solch eine Funktion verwenden, muss es aber nicht.
Die main()-Funktion ist in Javascript eine ganz normale Funktion.
Die Verwendung von Funktionen bestimmt, sofern eine Variablen-Deklaration mit dem Schlüsselwort var vorgenommen wird, die Sichtbarkeit von Variablen, oder anders ausgedrückt, jede, innerhalb der Funktionsklammer ({}) definierte Variable ist außerhalb der Klammer unsichtbar und damit vor Zugriff geschützt:
Code: Alles auswählen
// global variable
/*Object*/var gO = {name: "globalObject"};
// nicht sichbare Variablen sind auskommentiert
main();
/*void*/function main()
{
/*String*/ var mainVar = "mainVar";
alert
(
"gO.name: " + gO.name + "\n" +
"mainVar: " + mainVar + "\n" // +
// "subOfMainVar: " + subOfMainVar + "\n" +
// "subOfSubOfMainVar: " + subOfSubOfMainVar + "\n"
);
subOfMain();
/*void*/function subOfMain()
{
/*String*/ var subOfMainVar = "subOfMainVar";
alert
(
"gO.name: " + gO.name + "\n" +
"mainVar: " + mainVar + "\n" +
"subOfMainVar: " + subOfMainVar + "\n" // +
// "subOfSubOfMainVar: " + subOfSubOfMainVar + "\n"
);
subOfSubOfMain();
/*void*/function subOfSubOfMain()
{
/*String*/ var subOfSubOfMainVar = "subOfSubOfMain";
alert
(
"gO.name: " + gO.name + "\n" +
"mainVar: " + mainVar + "\n" +
"subOfMainVar: " + subOfMainVar + "\n" +
"subOfSubOfMainVar: " + subOfSubOfMainVar + "\n"
);
}
}
}
alert
(
"gO.name: " + gO.name + "\n" // +
// "mainVar: " + mainVar + "\n" +
// "subOfMainVar: " + subOfMainVar + "\n" +
// "subOfSubOfMainVar: " + subOfSubOfMainVar + "\n"
);