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

时间:2019-12-29 00:17:35

标签: javascript iife

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

    function a () {};
    a();

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

    (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之间的随机整数。

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

1 个答案:

答案 0 :(得分:0)

可以,但是不可以

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

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

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

    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);