Can somebody please explain me why the following code works?

```
function getLastName()
{
    fullName.lastName = "World";   
}

function writeName()
{
    fullName = {};
    fullName.firstName = "Hello";
    getLastName();
    document.write(fullName.firstName + " " + fullName.lastName);
}

writeName();

```

For some reason, `getLastName()` can reach local its enclosing method's local state. How can this work? And also should I utilize this feature of Javascript or it is considered as a bad practice? If it is a bad practice, could you please explain why?

You can see the actual code working here at <http://jsbin.com/atituk/2/edit>