ArticleslgStudy

computer science

Variable shadowing

Variable shadowing is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Variable shadowing rather than just read about it. In short: In computer programming, variable shadowing occurs when a variable declared within a certain scope (decision block, method, or inner class) has the same name as a variable declared in an outer scope. At the level of identifiers (names, rather than variables), this is known as name masking.

Key takeaways

  • Variable shadowing belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Variable shadowing to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Variable shadowing from memory before moving on to harder problems.

Reference excerpt

In computer programming, variable shadowing occurs when a variable declared within a certain scope (decision block, method, or inner class) has the same name as a variable declared in an outer scope. At the level of identifiers (names, rather than variables), this is known as name masking. This outer variable is said to be shadowed by the inner variable, while the inner identifier is said to mask the outer identifier. This can lead to confusion, as it may be unclear which variable subsequent uses of the shadowed variable name refer to, which depends on the name resolution rules of the language. One of the first languages to introduce variable shadowing was ALGOL, which first introduced blocks to establish scopes. It was also permitted by many of the derivative programming languages including C, C++ and Java. The C# language breaks this tradition, allowing variable shadowing between an inner and an outer class, and between a method and its containing class, but not between an if-block and its containing method, or between case statements in a switch block. Some languages allow variable shadowing in more cases than others. For example Kotlin allows an inner variable in a function to shadow a passed argument and a variable in an inner block to shadow another in an outer block, while Java does not allow these (see the example below). Both languages allow a passed argument to a function/Method to shadow a Class Field. Some languages disallow variable shadowing completely such as CoffeeScript and V (Vlang).

Example

Lua The following Lua code provides an example of variable shadowing, in multiple blocks.

Python The following Python code provides another example of variable shadowing:

As there is no variable declaration but only variable assignment in Python, the keyword nonlocal introduced in Python 3 is used to avoid variable shadowing and assign to non-local variables:

The keyword global is used to avoid variable shadowing and assign to global variables:

Rust

C++

Java

However, the following code will not compile:

JavaScript ECMAScript 6 introduction of let and const with block scoping allow variable shadowing.

See also Overloading Type polymorphism Name binding

References

Worked examples

Example 1 — a first encounter with Variable shadowing

Start with the simplest possible case. Write down what Variable shadowing claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Variable shadowing before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Variable shadowing ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Variable shadowing

In research
Variable shadowing appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Variable shadowing in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Variable shadowing is common in secondary-school and first-year university syllabi. It links to neighbouring topics Programming language comparisons, Variable (computer science), so understanding it makes those chapters shorter.
In everyday life
Look for Variable shadowing outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Variable shadowing in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Variable shadowing means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Variable shadowing out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Variable shadowing in simple terms?

In computer programming, variable shadowing occurs when a variable declared within a certain scope (decision block, method, or inner class) has the same name as a variable declared in an outer scope. At the level of identifiers (names, rather than variables), this is known as name masking.

Why does Variable shadowing matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Variable shadowing?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Variable shadowing.

Tags

  • Programming language comparisons
  • Variable (computer science)

Keep exploring