Search code examples
javascriptjquerylexical-scope

Why does jQuery has a "window=this" at the very begining and say it would speed up references to window?


When I open jQuery's source code I find this line.

var 
// Will speed up references to window, and allows munging its name.
window = this

Why and how this line will speed up?


Solution

    1. javascript functions have lexical scope
    2. jQuery wraps its entire implementation in an anonymous function
    3. when said function begins execution it is executing in the "global" scope (ie this == window).

    "window = this;" simply creates a local identifier in that scope so that references to it do not have to "bubble up" outside of the local scope to resolve.