Objects need space to be put into and to relate to each other. Lines of code need time to be executed. The space-time of the program is described by scopes. An object lives and dies by its scope. Lines of executable code operate within scopes.
Scopes provide the structure to program's space and time.
And ultimately programming is about structure. In a program, an object is identified by its name. But if we had to call the object by its name everywhere, we would end up with one global name space. The power to give an object different names in different scopes provides an additional level of indirection, so important in programming. This indirection can be accomplished by using a reference, an alias, an alternative name, that can be attached to a different object every time it enters a scope.