While looking at various JavaScript libraries, I have noticed a relatively common practice of passing either the window or the document object as part of the arguments given to the library initialization function.


While I understand very well why that would be done for libraries that are designed to run on non-browser environments, I do not know why that is done for libraries that seem designed only for client browser environments. (Such as all the examples given above).

  • just because they are meant to be only used in browsers doesn't mean that they will (users are stupid) Nov 19, 2014 at 11:17
  • @DanD. That should be an answer ;)
    – back2dos
    Nov 19, 2014 at 11:31

1 Answer 1


It also helps to speed up the library as window or document is now locally bound. And this also ensures that if latter the user, replaces the window object with say: window = "Help, I'm trapped in a window overwriting assignment statement.";; the library continues to work.

  • 3
    Also, it helps JS code minifiers in their work, as they can change the parameter name inside the function.
    – jhominal
    Nov 20, 2014 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.