我是否可以编写仅需要一次调用IIFE的所有函数

问题描述 投票:0回答:1

来自(似乎http://es5.github.io/#x12.4不允许这样做]

    function a () {};
    a();

    var a = function () {};
    a();

to

    (function () {}) ();

如果a()仅被调用一次?看起来很简洁。


确定,我将发布我的代码:
    const qty = []; 
    ((...setAmt) => {
        for (let i of setAmt) {
            qty.push(Math.floor(Math.random() * (i + 1)))
        }
    }) (10, 20, 10, 5, 20, 10, 10, 20, 20, 20);

vs

    const qty = [];
    const generator = (...setAmt) => {
        for (let i of setAmt) {
            qty.push(Math.floor(Math.random() * (i + 1)))
        }
    };
    generator(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);

这将生成一系列介于0和i之间的随机整数。

在类似情况下,我还有其他一些功能只能执行一次。

javascript iife
1个回答
0
投票

可以,但是不可以

iifes可以更快地编写,但是读取起来要慢很多,因为您必须阅读整个函数才能弄清楚它的作用。当错误开始出现时,这可能是一场噩梦。

代码必须可读且可维护,假设您必须阅读具有数百行代码的某人的代码,您想在各处看到命名函数或代码是什么?

下面还有一个更好的方法:

    const generateYourPhoneBill = (...args) => [...args].map((v) => Math.floor(Math.random() * (v + 1)));

    const lastMonth = generateYourPhoneBill(10, 20, 10, 5, 20, 10, 10, 20, 20, 20);
© www.soinside.com 2019 - 2024. All rights reserved.