The flexibility of Mathematica's symbolic architecture is reflected in its rich collection of carefully defined constructs for localization and modularization. The use of multiple forms of scoping allows for more elegant, readable, and efficient programs, supports the concept of programs as data, and allows direct correspondence with mathematical notions of variables.
With — evaluate with specified variables replaced by values
Module — localize names of variables (lexical scoping)
Block — localize values of variables (dynamic scoping)
DynamicModule — localize names of variables in dynamic interface constructs
Function — a pure function, with formal variables automatically scoped
Table — create a table, with iterator variables automatically scoped
BlockRandom — localize pseudorandom variables