I have no idea how to describe my question . 

```
(function(fn){
    var able=123;
    function tmp(){
        fn()
    };
    tmp();
})(function(){alert(able)});

```

This snippet throws a Reference Error :`able` is not defined' .

Would you please explain how javascript get variables to me ?