Skip to main content

Variables & Assignment

Declaring and modifying variables in templates.

Variable Declaration​

Use var to declare a new variable:

{var total = 0}
{var greeting = "Hello, " + name}

Assignment​

Use do to assign a new value to an existing variable:

{do total = total + item.price}
{do counter = counter + 1}

The do keyword executes the expression without producing output.

Property Assignment​

Assign values to object properties:

{do person.nickname = "Bob"}
{do settings.theme = "dark"}

This works with:

  • Object properties (calls setter if available)
  • Map entries

Side-Effect Statements​

Use do to execute any expression without output:

{do $log(debugInfo)}
{do processItem(item)}

Scoping Rules​

Variables follow block scope and lexical scoping:

{var x = 1}
{if condition}
{var x = 2} // New variable, shadows outer x
{x} // Outputs: 2
{end}
{x} // Outputs: 1

Variables declared inside a block are not visible outside it.

Closures​

Lambdas capture variables from their enclosing scope:

{var multiplier = 2}
{items | $map((x) => x * multiplier)}

The lambda can access multiplier even when executed later.