gpt4 book ai didi

javascript - 链式数组创建者

转载 作者:行者123 更新时间:2023-12-03 11:17:43 25 4
gpt4 key购买 nike

只是为了好玩,我正在寻找一种方法来创建具有以下行为的函数数组:

array()       // []
array(2) // ugly function thing
array(2)() // [2]
array(2)(3)() // [2,3] etc

我能到达的最接近的是

function array(x) {
if (x == null)
return []
return function() {
// same as above?!
// I don't want some inelegant solution involving a lot of additional parameters
}
}

ECMA5 有办法做到这一点吗?如果不是,请证明语法无法容纳这样的函数。

最佳答案

是的,“同上”。这是通过“递归”1 调用解决的:

function makeArrayAppender(arr) {
return function array() {
var args = Array.prototype.slice.call(arguments);
if (!args.length)
return arr;
else
return makeArrayAppender(arr.concat(args));
};
}
var array = makeArrayAppender([]);

1:由于该函数是从返回的“thunk”函数调用的,而不是从调用本身调用的,因此它并不是真正的递归。它更像是尾部调用优化的函数,连续手动调用而不填充堆栈

关于javascript - 链式数组创建者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com