一尘不染

JavaScript库里:实际应用是什么?

javascript

我认为我还没有抱怨过。我了解它的作用以及如何去做。我只是想不到一种情况,我会使用它。

您在JavaScript中的哪个地方使用currying(或者主要库在哪里使用它)?欢迎使用DOM操作或一般应用程序开发示例。

像功能slideUpfadeIn需要一个元素作为参数,并通常是一个咖喱函数返回带有内置默认的“动画功能”高阶功能。为什么这比仅使用具有某些默认值的upper-
up功能更好?

使用它有什么缺点吗?


因此,根据答案,通常使用currying和部分应用是便捷技术。

如果您经常通过使用相同的配置来调用它来“完善”高级功能,则可以使用(或使用Resig的partial)高级功能来创建简单,简洁的帮助器方法。


阅读 439

收藏
2020-05-01

共1个答案

一尘不染

这是在使用闭包的JavaScript中有趣和实用的curring用法:

function converter(toUnit, factor, offset, input) {
    offset = offset || 0;
    return [((offset + input) * factor).toFixed(2), toUnit].join(" ");
}

var milesToKm = converter.curry('km', 1.60936, undefined);
var poundsToKg = converter.curry('kg', 0.45460, undefined);
var farenheitToCelsius = converter.curry('degrees C', 0.5556, -32);

milesToKm(10);            // returns "16.09 km"
poundsToKg(2.5);          // returns "1.14 kg"
farenheitToCelsius(98);   // returns "36.67 degrees C"

这依赖于的curry扩展Function,尽管您可以看到它仅使用apply(没什么花哨的):

Function.prototype.curry = function() {
    if (arguments.length < 1) {
        return this; //nothing to curry with - return function
    }
    var __method = this;
    var args = toArray(arguments);
    return function() {
        return __method.apply(this, args.concat([].slice.apply(null, arguments)));
    }
}
2020-05-01