I guess the last thing to add is that scope != lifetime of the variable.
Lifetime deals with when a particular piece of data exists in memory. A simple example would be to have two variables point to the same object, and let one variable goes out of scope. The object will still exist in memory and can be accessed because it's still "alive".
Even when a variable goes out of scope, the data does not cease to exist immediately (ideally it would be, but that would take too much resources). It's alive until it's released from memory (in Java this is done automatically by the Garbage Collector). An analogy is being trapped (but alive) on a desert island vs. being dead.