Die Funktion main()

Hier werden Fragen und Probleme zur Anwendungsentwicklung mit InDesign diskutiert.
Antworten
wernerperplies
Beiträge: 250
Registriert: 6. Aug 2011, 17:48
Wohnort: 18374 Zingst
Kontaktdaten:

Die Funktion main()

Beitrag von wernerperplies » 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:

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" 
);
Testen Sie einmal dieses kleine Skript im Single-Step-Verfahren indem Sie die auskommentierten Zeilen innerhalb der Alerts wieder aktivieren.
einen schönen Tag wünscht

Werner Perplies
https://www.weepee.de

Antworten

Zurück zu „Fragen zur Programmierung“