javascript - 如何将变量作为全局参数传递给 IIFE 函数?
问题描述
我正在寻求local variables
作为一个传递给 IIFE(模块模式)global arguments
,但我不知道我该怎么做。
在这里,我有一个模块需要接收一些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, event, 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, event, 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);
就像我说的,我想将局部变量传递给我的模块,以便能够在范围内全局检查参数。
我可以像往常一样直接将变量传递给this.Event.drive(this.flag, this.length)
它,但它看起来有点脏和丑陋,所以我不会使用这种方式,除非有 0 种方式。
有没有办法做到这一点?
感谢聆听。
解决方案
IIFE
顾名思义,它立即调用函数,因此您可以将变量作为参数传递,因为它已经执行到那时。
您可以按如下方式传递值
var event = (function(name){return name})('value');
推荐阅读
- sql-server - 计数不同并返回具有最大日期的值
- r - 是否存在系统计算奇异的解决方案:R 中的倒数条件数 =...?
- php - PHP Post 变量的问题
- python - 如何使用模型中的其他字段初始化 Django 模型中的字段
- angular - 材料排序不适用于某些列
- django - django db_index=True 索引空值吗?
- php - 在 null 上调用成员函数 getPriceSum()
- qt - 使用 pyuic 与 uic.loadUi 的好处
- java - FileNotFoundException:从 .txt 文件加载数据时“访问被拒绝”
- javascript - 我通过运行 npm run build 构建了我的 Vuejs 应用程序,打开 index.html 会引发错误:无法加载资源:net::ERR_FILE_NOT_FOUND