website is under construction


Variables are named slots for storing values. You define a new variable in Ghost using the = operator, like so:

a = 1 + 2

This creates a new variable a in the current scope and initializes it with the result of the expression following =. Once a variable has been defined, it can be accessed by name as you would expect.

technology = "Micromachines"

print(technology) // >> Micromachines


Ghost has true block scope: a variable exists from the point where it is defined until the end of the block where that definition appears.

function foobar() {
  print(a) // Error: "a" doesn't exist yet.

  a = 123

  print(a) // >> 123

print(a) // Error: "a" doesn't exist anymore.

Variables defined at the top level of a script are top-level, or global. All other variables are local. Declaring a variable in an inner scope with the same name as an outer one is called shadowing and is not an error.

a = "outer"

function foobar() {
  a = "inner"

  print(a) // inner

print(a) // outer