如何将变量作为全局参数传递给IIFE函数?

我正在寻求将local variables作为global arguments传递给IIFE(模块模式),但是我不知道该怎么做。

这里有一个我的模块之一,需要接收一些variables作为模块范围之外的arguments

const Event = (function(flag,length) {
    console.log(flag,length);

    function drive(target,event,callback) {
        let isStringArray = Array.isArray(event);
        if (isStringArray) {
            event.forEach(string => register(target,string,callback))
        }
    }
    function register(target,callback) {
        target.forEach((item,index) => {
            item.addEventListener(event,callback)
        })
    }
    return {
        drive: drive
    }
})();

export default Event;

这是我的主要代码:

import Event from './event.js';
import Process from './process.js';

class Slider {
    constructor(root,elem,process) {
        /* Instance Arguments */
        this.root = document.getElementById(root);
        this.elem = this.root.querySelectorAll(elem);

        /* Local Variables that need to pass to Module Pattern. */
        this.flag = true;
        this.length = this.elem.length;

        /* Global Modules */
        this.Event = event(this.flag,this.length); // doesn't work. 
        this.Process = process;
        this.Setup;
    }
    get Setup() {
        this.Event.drive(this.elem,['mouseenter','click'],(e) => this.Process.finish(e));
    }
}

let slider = new Slider('slider','.image',Event,Process);

Full Code

就像我说的那样,我想将局部变量传递给我的模块,以便能够在范围内全局检查参数。

我可以像平常一样直接将变量直接传递给this.Event.drive(this.flag,this.length),但是它看起来有点脏又丑陋,因此除非有0种方法,否则我不会使用这种方法。

有什么方法可以做到这一点?

感谢聆听。

shensheng1981 回答:如何将变量作为全局参数传递给IIFE函数?

IIFE

顾名思义,它具有立即调用功能,因此您可以将变量作为参数传递,因为该变量直到那时都已执行。

您可以按以下方式传递值

var event = (function(name){return name})('value');

本文链接:https://www.f2er.com/3168276.html

大家都在问