Breaking circular references
Once these patterns discussed in the previous post are identified, circular references can be worked around (pun intended).
elem at the end breaks the circular reference.
Use another closure
anotherInnerFunction in brackets and adding another pair of brackets at the end means that the function will get executed as soon as the code loads. It is known as an IFFE or an Immediately Invoked Function Expression. This IFFE is also a closure, and it breaks the circular reference that would have been created via a reference to the outer lexical scope.
Avoid using a closure
Depending on the use case, one might do away with the closure itself in order to avoid a circular reference. The closure has now been reduced to a simple
onload function that calls another function. This method, ofcourse, dwells on a better understanding of closures, and what use cases justify the need for one.
Feel free to get back to me with any doubts or clarifications. I shall try my best to answer each one of them personally.