No. The closure would be on the variable "n" but only if the f1 function returned the f2 functon so that f2 can be called after f1 has already finished running (and where the "n" variable would have already gone out of scope except for the fact that there is still a way to reference it via f2.
The following would be a closure:
alert(n); // 999
a = f1();
With that code the last line a() will run the alert to display the 999 even though the call to f1 completed and n would have gone out of scope except for the closure.