Die Funktion main()
Verfasst: 15. Okt 2015, 06:57
Im HilfDirSelbst-Forum stellt MD im Beitrag Grundsätzliche Fragen zum Scripting und Scripting-Strategien die Frage:
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:
Testen Sie einmal dieses kleine Skript im Single-Step-Verfahren indem Sie die auskommentierten Zeilen innerhalb der Alerts wieder aktivieren.
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"
);