> When you create a named function is is basically a static 
> object stored in funcname of the scope it was defined in. 
> when you declare a var in a function it is also a static 
> object attached to the function object. As such mydata is a 
> single static object and effectively a single object in the 
> global space of objects. So repeated calls to funcname that 
> set mydata will result in the last calls values be stored into mydata.
> 
> With the anon function, you are actually creating multiple 
> functions each with its own mydata variable defined within 
> each anon function. The var statement DOES NOT work like it 
> does in C where the variable is created on the stack and is 
> unique to that function call at runtime.
> 
> Does this sound right?

No, not at all. (Sorry!)

The var statement DOES work just like a variable declaration in C. A
variable declared in a function is not attached to the function object. It
is created when the function is *called*, the same as in C, and free for
garbage collection when the function returns - unless there is an
outstanding reference to it as in the case of a closure. Even when there is
a closure, a variable is still specific to a single invocation of the
function in which it is declared.

Also, it makes no difference if a function is named or anonymous. The scope
rules are identical for either kind of function.

I'll go look at the original problem, but I just wanted to correct this
first.

-Mike


_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to