NEWS
Global script Benutzung
-
Ahoi!
Frage:
Ein Global script wird vor jedem common script kopiert, bevor das dann ausgeführt wird, richtig?
Das heisst auch das der variablenhaushalt (von dem zusammen kopierten script) auch nur dem
zusammen kopierten script gehört. Korrekt?
Wieso die doofe Frage:
Wenn ich eine Funktion "Timer" baue, die lokale Daten speichert, und diese dann im Script
Wecker1 nutze, sollte der lokale Variablenhaushalt nicht mit dem Script Wecker2 kollidieren usw…
Eigentlich irgendwie logisch, aber ich frage lieber einmal mehr nach :-)
btw:
iobroker ist mal eine richtig coole Sache! Hut ab...
LG
Uwe
-
Nein,
Meines Wissens nach sind in einem global Skript deklarierte Variablen auch dann wirklich global.
Edit:
Wenn ich deine Frage nochmal lese, bin ich mir auch nicht mehr sicher….
-
Ein Global script wird vor jedem common script kopiert, bevor das dann ausgeführt wird, richtig? `
Ja, es wird vor alle nicht globalen Skripte kopiert.
@DerUwe:Wenn ich eine Funktion "Timer" baue, die lokale Daten speichert, und diese dann im Script
Wecker1 nutze, sollte der lokale Variablenhaushalt nicht mit dem Script Wecker2 kollidieren usw… `
Nein, jedes Skript hat seine eigenen Variablen - unabhängig vom Namen. Es können keine Werte von einem Skript zu einem anderen Skript übergeben werden; dazu benötigt man Datenpunkte (setState(id, wert), getState(id).val).Globale Skripte sollten nur häufig verwendete Funktionen enthalten. Innerhalb von Funktionen deklarierte Variablen sind immer lokal, d.h. die Gültigkeit ist auf die Funktion beschränkt.
-
-
Wenn ich use strict in einem globalen script verwende, gilt der strict mode dann auch für alle anderen scripts ? `
Ich würde behaupten: Nein. Begründung:1. 'use strict' wirkt auf den Parser des JS-Editors und nicht auf den Compiler.
2. 'use strict' wirkt nur, wenn es am Anfang des Skripts verwendet wird. Globale Skripte werden nicht mehr vor die anderen Skripte kopiert, sondern an die anderen Skripte angehängt. Das verursacht zwar evtl. einen zusätzlichen Compiler-Durchlauf, hat aber den Vorteil, dass man mit den Zeilennummern in den Fehlermeldungen etwas anfangen kann, was vor der Änderung nicht der Fall war.