Solidity Steps
  • Learning Solidity
  • Step 1
    • 1: Introduction
    • 2: Data Types
    • 3: Functions
    • 4: Control Structures
    • 5: State Variable
    • 6: Local Variables
    • 7: Global Variables
    • 8: View Keyword
    • 9: Pure Keyword
  • STEP 2
    • 10: Immunable Keyword
    • 11: Events
    • 12: Condition
    • 13: While Loop
    • 14: Do While Loop
    • 15: For Loop
    • 16: Required
    • 17: Assert
    • 18: Revert
    • 19: Modifier
  • STEP 3
    • 20: Constructor
    • 21: Mapping
    • 22: Array
    • 23: Enum
    • 24: Structs
    • 25: Data Location
    • 26: Inheritance
    • 27: The Shadowing Effect
    • 28: Super Keyword
    • 29: Visibility
  • STEP 4
    • 30: Interface
    • 31: Abstract Contract
    • 32: Payable
    • 33: Using type()
    • 34: Sending Ether
    • 35: Receive
    • 36: Fallback
    • 37: Call
    • 38: DelegateCall
    • 39: Calling Other Contracts
  • STEP 5
    • 40: Factory Contract
    • 41: Proxy Contract
    • 42: Create2
    • 43: Try and Catch
    • 44: Solidity Library
    • 45: ABI Encoded
    • 46: ABI Decoded
    • 47: Keccak256
    • 48: Function Signature Hash
  • TIPS
    • Tips: Solidity by "Immunable"
    • Tips: Truffle Tutorial
    • Tips: Microblog Dapp
    • Tips: Reentrancy
    • Tips: Slither Tutorial
    • Tips: Remix Tutorial
    • Tips: Hardhat Tutorial
  • CAREER
    • 💲Cover Letter
    • 💲Resume
  • ABOUT
    • Contact me
Powered by GitBook
On this page
  1. STEP 3

27: The Shadowing Effect

The shadowing effect is an important concept in solidity that explains how changes to a variable's value can have unintended consequences. This is due to the fact that variables in solidity can be shadowed, meaning they can be declared multiple times within the same scope with the same name, but with different values. This can lead to unexpected results, particularly when the variable is used in a function.

  • Example 1 Let's look at the following code:

uint x = 10;  
function increaseByTwo() public {   x = x + 2; }

If the function increaseByTwo is called, the value of x will be increased by two. This is because the variable x declared within the function has the same name as the one declared outside the function, but has a different value.

  • Example 2 Let's look at the following code:

uint x = 10;  
function increaseByTwo() public {   
    uint x = 12;   
    x = x + 2; 
}

If the function increaseByTwo is called, the value of x will remain the same. This is because the variable x declared within the function shadows the one declared outside of it, meaning the function is using the value of the x declared within the function, rather than the one declared outside the function.

That's it for the lesson 27! In the next lesson, Super Keyword

Previous26: InheritanceNext28: Super Keyword

Last updated 1 year ago