Christopher Diggins on closures and anonymous functions:
… closures have a very clear downside: they increase code coupling. Passing a single closure can extend the lifetime of massive numbers of objects, leading to a huge performance hit.
Closures are a very powerful feature, but dangerously so. They are arguably too easily abused. A language designer has the responsibility to force a programmer to be explicit about dangerous things.
I love closures, and it’s one important corner stone of many elegant solutions. For example Python decorators will not be as useful without closures supported in the language. However I also agree with the danger of abusing closures — it is indeed something that programmers can easily shot themselves on the foot. Javascript memory leak on many web-based applications for example, is caused by closures keeping the browser-created objects (i.e. DOM nodes) for too long, sometimes due to bad cross referencing.