Most programming languages offer support for subroutines.
When execution changes between subroutines, different sets of variables and functions ("scopes") are available to the program.
Frequently these sets are defined by the placement of the variable and function declarations ("static scoping" or "lexical scoping").
These sets may also be defined by special modifiers to the variable and function declarations.

Show the different scope modifiers available in your language and briefly explain how they change the scope of their variable or function.
If your language has no scope modifiers, note it.

set globalVar "This is a global variable"
namespace eval nsA {
    variable varInA "This is a variable in nsA"
}
namespace eval nsB {
    variable varInB "This is a variable in nsB"
    proc showOff {varname} {
        set localVar "This is a local variable"
        global globalVar
        variable varInB
        namespace upvar ::nsA varInA varInA
        puts "variable $varname holds \"[set $varname]\""
    }
}
nsB::showOff globalVar
nsB::showOff varInA
nsB::showOff varInB
nsB::showOff localVar