Variable shadowing in JavaScript occurs when a variable declared in an inner scope has the same name as a variable in an outer scope. The inner variable "shadows" or hides the outer variable within its specific scope. This means that within the inner scope, any reference to that variable name will refer to the inner variable, making the outer variable inaccessible until the inner scope is exited