NEWS
Reichweite von Variablen
-
Hallo,
ich habe ein seltsames Problem.
Ich habe einen Trigger auf eine Variable erstellt. Wenn ich ihn wie gewohnt Bewegungsmelder ON nenne geht dieser Trigger nicht. Dieser Namen kommt auch in anderen Scripten vor. Daraufhin habe ich in AAA umbenannt und es geht. Das script liegt nicht im Ordner globale scripte. Die Variablen sind doch lokal im script? Was kann dies auslösen?
VG
Krodon
-
@krodon sagte in Reichweite von Variablen:
Bewegungsmelder ON
Mit dem Leerzeichen drin? Wird vermutlich der Grund sein.
-
-
@thomas-braun sagte in Reichweite von Variablen:
Mit dem Leerzeichen drin? Wird vermutlich der Grund sein.
Eher nicht. Blockly ersetzt Leerzeichen automatisch durch Unterstriche.
@krodon
Leer- und Sonderzeichen sollte man grundsätzlich vermeiden.
Wird die Variable an anderer Stelle im Script nochmals verwendet? -
@codierknecht said in Reichweite von Variablen:
@krodon
Leer- und Sonderzeichen sollte man grundsätzlich vermeiden.
Wird die Variable an anderer Stelle im Script nochmals verwendet?Nein, sie ist einmalig
VG
Krodon
-
@krodon
Funktioniert hier einwandfrei:
-
@krodon sagte in Reichweite von Variablen:
Dieser Namen kommt auch in anderen Scripten vor.
hast du irgendwas kopiert statt neu anzulegen?
-
@krodon sagte: Das script liegt nicht im Ordner globale scripte.
Gibt es ein aktives Skript unter "global", das den Bezeichner
Bewegungsmelder ON
enthält? -
@krodon sagte in Reichweite von Variablen:
Die Variablen sind doch lokal im script?
In "normalen" Scripten sind Variablen nur in diesem Script gültig.
Aber wie @paul53 schon schreibt:
Bei globalen Scripten verhält sich das anders, da deren Code in die anderen Scripte hineinkopiert wird.Vielleicht hilft es aber bereits, die JS-Instanz einmal durchzustarten.
-
@codierknecht said in Reichweite von Variablen:
@krodon sagte in Reichweite von Variablen:
Die Variablen sind doch lokal im script?
In "normalen" Scripten sind Variablen nur in diesem Script gültig.
Aber wie @paul53 schon schreibt:
Bei globalen Scripten verhält sich das anders, da deren Code in die anderen Scripte hineinkopiert wird.Vielleicht hilft es aber bereits, die JS-Instanz einmal durchzustarten.
JS durchzustarten hat nichts gebracht, aber nach einem Reboot ging es
Bei globalen Scripten verhält sich das anders, da deren Code in die anderen Scripte hineinkopiert wird.
Bedeutet dies, wenn ich dort Funktionen ablege, sie von jedem Script aufgerufen werden können?
VG
Krodon
-
@krodon sagte: Bedeutet dies, wenn ich dort Funktionen ablege, sie von jedem Script aufgerufen werden können?
Ja, "global" ist für häufig verwendete eigene Funktionen gedacht.
Man sollte allerdings für die globalen Funktionen Bezeichner verwenden, die man in "normalen" Skripten nicht verwenden würde. -
@krodon sagte in Reichweite von Variablen:
Bedeutet dies, wenn ich dort Funktionen ablege, sie von jedem Script aufgerufen werden können?
Ja - weil der Code in jedes andere Script hineinkopiert wird.
Globale Scripte sind allerdings mit Vorsicht zu genießen. Man sollte da schon recht genau wissen, was man da tut.Zusätzlich zu @paul53's Hinweis zu den Bezeichnern sei noch erwähnt: In globalen Scripten auf keinen Fall Trigger einsetzen! Wie gesagt: Der Code wird in jedes "normale" Script kopiert. Man hätte dann die Trigger x-fach.