I disagreed with what to say about linkers (I also said that command line shells in OSes are also exctly like linkers; and variable name binding implemented in any language is in fact also like a linker). Everywhere there's an order of priority for name lookups
In programming languages, including Lua, this is called "scope", and a "closure" is the fact of binding specific sets of variables to specific scopes.
And that's what I mean by "locality".
Some names may be left unresolved by such linking/binding, leaving "external" names. Or they may be oinly partially resolved to a small subset, with a late final binding: this is what occurs with effective values of parameters of functions (but there's still always a priority order for completely resolving these links).
I do not know any example where a well defined priority order is not used by any "linker" (or programming language, or shell using linking/binding) for resolving "names", "symbols", or "variables", even in languages that allow symbolic values (e.g. Lisp, or Prolog).