我认为我还没有抱怨过。我了解它的作用以及如何去做。我只是想不到一种情况,我会使用它。
您在JavaScript中的哪个地方使用currying(或者主要库在哪里使用它)?欢迎使用DOM操作或一般应用程序开发示例。
像功能slideUp,fadeIn需要一个元素作为参数,并通常是一个咖喱函数返回带有内置默认的“动画功能”高阶功能。为什么这比仅使用具有某些默认值的upper- up功能更好?
slideUp
fadeIn
使用它有什么缺点吗?
因此,根据答案,通常使用currying和部分应用是便捷技术。
如果您经常通过使用相同的配置来调用它来“完善”高级功能,则可以使用(或使用Resig的partial)高级功能来创建简单,简洁的帮助器方法。
这是在使用闭包的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))); } }