首页 > 解决方案 > JavaScript 函数:这是做什么的?

问题描述

我一直在查看这段代码一段时间,试图了解它的作用,但我无法真正理解它。我需要帮助来理解这个函数的实际作用

function element(array, gen) {
if(gen === undefined) {
    gen = fromTo(
        0,
        array.length
    );
}
return function() {
    var index = gen();
    if(index !== undefined) {
        return array[index];
    }
};

}

function concat(...gens) {
    var next = element(gens),
    gen = next();
    return function recur() {
        var value = gen();
        if(value === undefined) {
            gen = next();
            if(gen !== undefined) {
                return recur();
            }
        }
        return value;
    };
}

标签: javascriptfunction

解决方案


element不是内置的 javascript,这意味着它必须在其他地方定义。如果不知道它的功能,就不可能确切地说出发生了什么,但我可以告诉你。

concat接受 n 个相同类型的参数。在不知道是什么的情况下element,我无法告诉您那是什么类型,但是您可以根据需要提供多少。这就是价差运算符...告诉你的。

它返回一个接受 0 个参数的函数。调用时,它会继续调用自身,检查是否gen()定义了返回值,如果没有定义,则将 gen 更改为返回值next()并再次调用gen()。它重复这个过程,直到gen()定义了返回值,然后返回该值。

使用它看起来像这样。

var recur = concat(a,b,c,d,e); // can take any number of arguments of the same type
var someValue = recur(); // calls itself until it has a value to return
console.log(someValue); // use the value

推荐阅读