Moin Moin,
while watching a stupid film in TV, what can you better do than playing with Firebug’s JS console. Actually I played with callbacks. Here ist what I did:
console.log("FIRST WAY:") var fn = (function(param) { console.log("param in fn (first way): " + param); }('bla')); var action = function(callback) { callback; } console.log("calling action:"); action(fn); console.log("action is a: " + typeof action); console.log("fn is a: " + typeof fn); console.log(" ") console.log("OTHER WAY:") var fn = function(param) { console.log("param in fn (other way): " + param); } var action = function(callback) { var param = 'other way'; callback(param); } console.log("calling action:"); action(fn); console.log("action is a: " + typeof action); console.log("fn is a: " + typeof fn);
Result:
FIRST WAY: param in fn (first way): bla calling action: action is a: function fn is a: undefined OTHER WAY: calling action: param in fn (other way): other way action is a: function fn is a: function
Hm - what’s that? Yeah - just playing around. Actually there are two things which are kind of interesting. First, the anonymous function is called immediately after it was built. Even though it is held in a variable (fn).
The second thing is, that the typeof fn is undefined. Hm … I don’t know why at the moment I am writing this. I would expect it is a string. I will examine this further.
One side note: you have to call the callback in action() in the first approach as a string because it’s not a function - that’s why I assume it should be typeof string.
The conclusion is: don’t use the first way because it does not work and does not make sense at all.