将函数定义为返回函数的IIFE的目的是什么

What is the purpose of defining a function as an IIFE returning a function?

本文关键字:函数 IIFE 是什么 返回 定义      更新时间:2023-09-26

在three.js源代码中,该模式有多种用法。似乎取消IIFE不会有任何区别。我的猜测是,命名函数优于匿名函数。

https://github.com/mrdoob/three.js/blob/master/src/core/Object3D.js

Object.assign( THREE.Object3D.prototype, ..., {
    ...
    rotateX : function () {
        var v1 = new THREE.Vector3( 1, 0, 0 );
        return function rotateX( angle ) {
            return this.rotateOnAxis( v1, angle );
        };
    }(),
    ...
})

它创建了一个闭包,使函数可以访问v1的值,而不必将v1变量放在比必要范围更宽的范围内。