What technique is used here in this JavaScript code?
<pre><code>var a = (function(y,x) {
    var x = null;
    return {
        foo: function(x){ return this.bar(x * y); },
        bar: function(x){ return x + y; }
    }
})(3,4);
</code></pre>

<p>Would someone please be kind enough to explain me what exactly is happening in the above code? Where can I read or refer on advanced JavaScript techniques? Sorry, I'm just starting to learn JavaScript.</p>
