Lexical scoping is a method of variable scope determination where the structure of the source code, particularly the block structure, defines the variable scope. It allows functions to access variables from their defining environment, not from where they are called, enabling more predictable and modular code behavior.