javascript - 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;
};
}
解决方案
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
推荐阅读
- c# - 在测试的 inlineData 中使用类
- pandas - pandasUDF 和 pyarrow 0.15.0
- python-3.x - combineByKey 失败
- javascript - 遍历每个输入字段时验证必填字段
- python - 在 OpenCV stereoRectify 之后计算 3D 中的相机和图像像素位置
- scala - 带有尾递归的 java.lang.OutOfMemoryError
- c++ - 我可以使用泛型枚举类型作为函数的参数吗?
- elasticsearch - Fluentd 尾源不将日志移动到 ElasticSearch
- python - 计算菱形图案中的星星数量
- excel - 选择特定工作表并保存在新文件中