On Thu, Oct 27, 2011 at 10:30 AM, Rahul <rahulshivsha...@gmail.com> wrote: > hi, > > this is my code, > > function fngg(){ > var f = function(){ alert(studentName); } > var studentName = "Kate Adam Bikensale"; > return f; > } > > now i can call the above function using window's onload event as > follows, > > window.onload = fngg(); > > this works fine, > > but how come the following code works > fngg()(); > > just when i refresh the page the fngg function gets called as well as > the inner closure "f" is also getting called, > > my question is on which event the "fngg()()" is linked to ? > > as i am not calling this through window.onload, so how come this > works ?
Ok so you have a function that returns a function. Functions are "just objects" in JavaScript. So when you return a function, you can immediately call it or pass it on. In the event case, you're just passing on the returned function to the event handler. In the second case you're immediately calling it. var f = function(){}; var x = f; f(); f()(); // error var g = function(){ return function(){ return 10; }; }; g(); // func g()(); // 10 var x =h; x(); // func x()(); // 10 var y = h(); y(); // 10 y()(); // error Note that the event handler will simply call your callback when it is triggered. Hope this helps... - peter -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/jsmentors@jsmentors.com/ To search via a non-Google archive, visit here: http://www.mail-archive.com/jsmentors@googlegroups.com/ To unsubscribe from this group, send email to jsmentors+unsubscr...@googlegroups.com