The same construct is available in some other languages, most notable Javascript, so something like:
function doSomething() { var o = document.getElementById('thing'); o.innerHTML = "Stuff"; o.style.height="300px"; o.style.backgroundColor="#ffffff;" }
could end up as:
function doSomething() { (function(o) { o.innerHTML = "Stuff"; o.style.height="300px"; o.style.backgroundColor="#ffffff"; })(document.getElementById('thing'); }why is this good?
I'm not entirely sure. I think that when you have multiple blocks and when you have multiple arguments it could help with scoping. I think it might make things clearer potentially, though I'm not so sure. It would mean the args to the function are at the bottom not the top. That could be seen as either a good thing or a bad thing.
I could see it being helpful syntactically when processing lists perhaps?
function doSomething() { (function(v,c) { for (var t = 0; t<v.length; t+=1) { v[t].style.backgroundColor=c; } })(document.getElementByTagName('div'),'#ffffff'); }
Or is it really just functional programming wankery that doesn't have any place outside the confines of Scala and other similar things?
I've noticed there is a way to call an anonymous function recursively too, but I think that is definitely descending into the realm of esoteric to the point of silliness.
No comments:
Post a Comment