I start to read JavaScript Patterns, some codes confused me. var global = (function () { return this || (1, eval)('this'); }()); Here are my questions: Q1: (1, eval) === eval? Why and how does it work? Q2: Why not just var global = (function () { return this || eval('this'); }()); or var global = (function () { return this; }());