gpt4 book ai didi

javascript - 使用 curry 递增一个值,直到它等于另一个值

转载 作者:行者123 更新时间:2023-11-29 14:42:26 25 4
gpt4 key购买 nike

我一直在努力研究 JavaScript 中的柯里化(Currying),但不确定如何多次调用柯里化(Currying)函数以返回传递给函数的值的增量。

这是我的代码:

function curryFunc(x) {
var index = x;
var tmp;

return function(y) {
tmp = y;
index++;

if (index < tmp) {
console.log('index < y. index =',index);
} else {
console.log('end');
return;
}
}
};

var read = curryFunc(1);

var test = read(3);
test(); // 'index < y. index = 2'
test(); // This returns an error: js:32 Uncaught TypeError: test is not a function

如何让 test 继续记录 x 的增量,直到它等于 y

最佳答案

不幸的是,您没有正确阅读您的代码以及生成的输出和异常。

这是真正发生的事情:

function curryFunc(x) {
var index = x;
var tmp;

return function(y) {
tmp = y;
index++;

if (index < tmp) {
console.log('index < y. index =',index);
} else {
console.log('end');
return;
}
}
};

var read = curryFunc(1);

var test = read(3); // 'index < y. index = 2'
test(); // This returns an error: js:32 Uncaught TypeError: test is not a function
test(); // This never happens because of the exception above

你可能想做的是:

function curryFunc(x) {
var index = x;
var tmp;

return function(y) {
tmp = y;
return function() {
index++;

if (index < tmp) {
console.log('index < y. index =',index);
} else {
console.log('end');
return;
}
}
}
};

var read = curryFunc(1);

var test = read(3);
test();
test();

这也不完全是柯里化(Currying),它只是笨拙的闭包。

但实际上,您不应该编写这样的代码。如果您真的需要柯里化(Currying),请使用库。

关于javascript - 使用 curry 递增一个值,直到它等于另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971903/

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