前端经典面试题解密-add(1)(2)(3)(4) == 10到底是个啥?
前言 前端的小伙伴在面试的时候,几乎都会遇到一道这样的面试题: add(1)(2)(3)(4)输出结果为10。在第一次看到这道面试题的时候,很多小伙伴感到了迷茫!借用王宝强在《人在囧途》中的表演:啥啥啥,这写的都是啥?下面胡哥为各位小伙伴带来这道题的揭秘。 一、核心点-基础函数的变种-函数柯里化 我们从0开始,一点点儿的观察。add(1)(2)(3)(4)输出的值怎么成为10,很简单,大家都明白是1+2+3+4的累加。那使用基础函数是怎么实现的呢? function add (a, b, c, d) { return a + b + c + d } add(1, 2, 3, 4) // 10 那如何add(1)(2)(3)(4)如何也输出10呢?小伙伴接下来可能会想到这样: function add (a) { return function (b) { return function (c) { return function (d) { return a + b + c + d } } } } 是不是很完美! 但是如果你这么回答面试官,面试官肯定会立刻怼死你,累加到100怎么办?(PS:没有说10000已经很客气了) 王老师经典语录:下面的是重点,圈起来,一定要考!! 函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数