NEWS


  • 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….


  • @DerUwe:

    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.


  • Ah, ok, verstanden!

    Also schreibe ich eine Funktion "Zeitschaltuhr" und packe diese in Global,

    und nutze die Funktion dann von mir aus 5 mal in anderen Scripten mit den jeweiligen Parametern.

    LG

    Uwe


  • sorry, dass ich diesen alten Thread wieder raus hole, aber ich dachte für diese kleine Frage passt das hier ganz gut.

    Wenn ich use strict in einem globalen script verwende, gilt der strict mode dann auch für alle anderen scripts ?

    Danke und Grüße


  • @NyanCat:

    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.


  • @paul53:

    Ich würde behaupten: Nein. `

    Vielen Dank für die Info,

    weißt du zufällig auch noch eine Lösung bei diesem Problem?

    viewtopic.php?f=21&t=13122&p=138789#p138789

    Grüße.

Suggested Topics

  • 2
  • 4
  • 16
  • 3
  • 3
  • 1
  • 3
  • 12

1.7k
Online

37.0k
Users

42.7k
Topics

592.8k
Posts