Scoping Constructs
The flexibility of the Wolfram Language'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
Constructs with Automatic Name Scoping
Function — a pure function, with formal variables automatically scoped
Rule (->), RuleDelayed (:>) — named pattern variables automatically scoped
Set (=), SetDelayed (:=) — named pattern variables automatically scoped
Constructs with Automatic Value Scoping
Table — create a table, with iterator variables automatically scoped
Do ▪ Sum ▪ Plot ▪ Plot3D ▪ NDSolve ▪ ...
Other Forms of Scoping
Begin, End — localize symbol namespace
Throw, Catch — localize control transfer
Confirm, Enclose — localize exceptions
Quiet, Check — localize messages
BlockRandom — localize pseudorandom variables
WithCleanup — clean up before returning the result of an evaluation