gpt4 book ai didi

javascript - 在这种情况下,为什么柯里化(Currying)函数的工作方式与 javascript 中的普通函数不同?

转载 作者:行者123 更新时间:2023-12-02 21:22:06 25 4
gpt4 key购买 nike

我创建了一个生成器。运行代码,

最后一部分是这样写的。

const genratorAnimation = gen(); 

let result = genratorAnimation.next();
genratorAnimation.next();

let interval = setInterval(function(){
if(!result.done) {
genratorAnimation.next();
}
else {
clearInterval(interval)
}
}, 50);

我尝试使用非柯里化(Currying)函数来运行它,例如。

let result = gen().next();
gen().next();

let interval = setInterval(function(){
if(!result.done) {
gen().next();
}
else {
clearInterval(interval)
}
}, 50);

但是,它无法正确运行代码。这是为什么?阅读此处的帖子和其他来源后,解释似乎是对我而言,柯里化(Currying)函数只是表示函数的另一种方式。

但这一次,我发现其实差别并不大。谁能告诉我其中的区别吗?

最佳答案

每次调用gen()时,您都会返回一个新的Generator,因此您不断地重新初始化它。这就是为什么您的代码在使用第二个版本时不起作用。

您的示例可以这样总结:

const add = function () {
var counter = 0;
return function () { counter += 1; return counter; }
};

const count = add();

// Works
console.log('Works');
console.log(count());
console.log(count());
console.log(count());

//Doesn't work
console.log('Doesn\'t work');
console.log(add()());
console.log(add()());
console.log(add()());

关于javascript - 在这种情况下,为什么柯里化(Currying)函数的工作方式与 javascript 中的普通函数不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60817791/

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