<div dir="ltr"><div><div><div>Hi Kai,<br><br></div>thanks for the answer.<br><br></div>I did read the 'manual / website documentation several times and I have understood the scope of local variables.<br><br></div>It's possible to write the function either with<br><div><br> function multiply(a, b) {<br>
   var temp = a * b<br>
   return temp<br>
 }</div><div><br></div><div>or with<br></div><div><br> function multiply(a, b) {<br>
   locals.temp = a * b<br>
   return temp<br>
 }</div><div><br></div><div>Both 'creates' the local variable temp if it isn't available? So why use var if you can use locals.varname, too?<br></div><div><br></div><div>Greetings</div><div>Tobias<br></div><div><div><div><div><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 23, 2017 at 9:21 AM, Kai Nothdurft <span dir="ltr"><<a href="mailto:Kai.Nothdurft@rantzau.de" target="_blank">Kai.Nothdurft@rantzau.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">RTFM ;)<br>
<br>
<quote><br>
<br>
The *local* scope contains variables which only exist during the<br>
invocation of the current function, object or apply statement. *Local*<br>
variables can be declared using the var keyword:<br>
<br>
 function multiply(a, b) {<br>
   var temp = a * b<br>
   return temp<br>
 }<br>
<br>
Each time the multiply function is invoked a new temp variable is used<br>
which is in no way related to previous invocations of the function.<br>
<br>
When setting a variable which has not previously been declared as local<br>
using the var keyword the *this* scope is used.<br>
The *this* scope refers to the current object which the function or<br>
object/apply statement operates on.<br>
<br>
 object Host "localhost" {<br>
   check_interval = 5m<br>
 }<br>
<br>
In this example the this scope refers to the *localhost* object. The<br>
check_interval attribute is set for this particular host.<br>
You can explicitly access the *this* scope using the this keyword:<br>
<br>
 object Host "localhost" {<br>
   var check_interval = 5m<br>
<br>
   /* This explicitly specifies that the attribute should be set<br>
    * for the host, if we had omitted `this.` the (poorly named)<br>
    * local variable `check_interval` would have been modified<br>
instead.<br>
    */<br>
   this.check_interval = 1m<br>
 }<br>
<br>
Similarly the keywords *locals* and *globals* are available to access<br>
the local and global scope.     <----------------------------- !!!!!<br>
</quote><br>
<br>
Source:<br>
<<a href="https://www.icinga.com/docs/icinga2/latest/doc/17-language-reference/" rel="noreferrer" target="_blank">https://www.icinga.com/docs/<wbr>icinga2/latest/doc/17-<wbr>language-reference/</a>><br>
- Chapter "Variable Scopes".<br>
<br>
Gruss<br>
  Kai<br>
<br>
<br>
>>> On 22.11.2017 at 18:59, Tobias Koeck <<a href="mailto:tobias.koeck@gmail.com">tobias.koeck@gmail.com</a>><br>
wrote:<br>
<div><div class="gmail-h5">> Hi,<br>
><br>
> what is the difference between<br>
><br>
> var varname = 1<br>
><br>
> and<br>
><br>
> locals.varname = 1<br>
><br>
> And when use one and the other?<br>
><br>
> Greetings<br>
> Tobias<br>
</div></div>______________________________<wbr>_________________<br>
icinga-users mailing list<br>
<a href="mailto:icinga-users@lists.icinga.org">icinga-users@lists.icinga.org</a><br>
<a href="https://lists.icinga.org/mailman/listinfo/icinga-users" rel="noreferrer" target="_blank">https://lists.icinga.org/<wbr>mailman/listinfo/icinga-users</a><br>
</blockquote></div><br></div></div></div></div></div></div>