A symbol is a word which pushes itself on the stack when executed. Try it:
SYMBOL: foo
foo . foo
Before using a variable, you must define a symbol for it:
SYMBOL: name
Symbols can be passed to the get and set words to read and write variable values:
"Slava" name set
name get print Slava
If you set variables inside a with-scope, their values will be lost after leaving the scope:
: print-name ( -- ) name get print ;
"Slava" name set
[
"Diana" name set
"There, the name is " write print-name
] with-scope
"Here, the name is " write print-name There, the name is Diana
Here, the name is Slava
References There is a lot more to be said about dynamically-scoped variables and namespaces.