> For the complete documentation index, see [llms.txt](https://sevenval.gitbook.io/flat/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sevenval.gitbook.io/flat/reference/templating/variable.md).

# Template Variables

Local variables can be set as follows

```javascript
{{$variable := expr}}
```

where `variable` is a freely chosen name and `expr` is a template expression.

Note that we use the "beaver operator" `:=` for assignments. A simple `=` is the "equal operator". Additionally, there may be no whitespace between the `{{`, the `$` and the name of the variable.

The name of the variable must begin with a letter or underscore, followed by an arbitrary sequence of letters, numbers and underscores.

The visibility of the variable is limited to the current template. Global variables (e.g. `$env`) may be overridden locally in a template without affecting its global value.

Local variables can hold strings, numbers, booleans, JSON Objects and arrays or DOM node-sets. Variables can be reassigned.

```javascript
{{$i := 0 }}
{{$i := $i + 1 }}
{{$i := "Hey" }}
{{$i := concat('https://', $env/UPSTREAM_HOST) }}
{{$i := //*/@src }}
```

After a value has been assigned to a variable, it can be used in any expression.
