面试题之柯里化函数
经典面试题
实现一个add 函数: add(1)(2)(3) = 6
看起来很简单的样子,目测应该是一个函数中返回一个函数,那么手动实现下呢
虽然log最后结果是6,但是其实sum函数并没有返回6,而是每次都返回了自己,那么这里就需要想一想如何让sum最后返回6呢?
这里面需要用到
Function.prototype.toString()
函数每次返回并调用自己的时候会隐式调用toString这个方法
那么修改后是这个样子的
这里需要注意下的就是如果修改原型的toString()方法,就需要使用alert。不过还有一个问题就是这个函数是每次传一个参数,如果是多个参数呢,比如add(1,2,3)(4),这就需要考虑不定参了
实际上这个题就是经典面试中的柯里化函数,这个函数使得函数的使用更加灵活,低耦合....,当然柯里化函数不是简单的用来算和的,在实际工作中遇到了可以详细的再捣鼓捣鼓