这个JavaScript代码中使用了什么技术?

man*_*j82 2 javascript

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);
Run Code Online (Sandbox Code Playgroud)

请有人帮我解释一下上面的代码究竟发生了什么?我在哪里可以阅读或参考高级JavaScript技术?对不起,我刚开始学习JavaScript.

Que*_*tin 6

这是一个关闭.

创建一个匿名函数,然后立即执行并分配其返回值a.

传递给它的变量(或多或少)无法被其他函数干扰.

由于某种原因,在外部函数中x=4立即被覆盖x=null.然后在每个内部函数的参数中再次覆盖.这使得首先传递它毫无意义.

  • @jmort创建全局变量x不会影响此示例.内部函数不使用该x变量,无论它是外部函数的本地函数还是全局函数. (2认同)