### What it does Checks for bindings that shadow other bindings already in scope, either without an initialization or with one that does not even use the original value. ### Why is this bad? Name shadowing can hurt readability, especially in large code bases, because it is easy to lose track of the active binding at any place in the code. This can be alleviated by either giving more specific names to bindings or introducing more scopes to contain the bindings. ### Example ``` let x = y; let x = z; // shadows the earlier binding ``` Use instead: ``` let x = y; let w = z; // use different variable name ```