add(1)(2)(3)

一道常见的面试题

```

function add () {

    let res = [...arguments].reduce((a, b)=>{

        return a+b;

    }, 0);

    let temp=function() { // 使用闭包

        if(arguments.length){

            res+=[...arguments].reduce((a, b)=>{

                return a+b;

            }, 0);          // 累加

            return temp;         

        } else {

            return res;

        }

    }

    temp.toString = function() { // 重写toSting() 方法

        return res;

    }

    return temp; // 返回一个函数

}

console.log(add(1,2,3)()) //6

console.log(add(1,2,3)) //f 6

console.log(add(1)(3)) // f 4

console.log(add(1)(3)(5)()) //9

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 柯里化是函数的一个比较高级的应用,想要理解它并不简单。因此我一直在思考应该如何更加表达才能让大家理解起来更加容易。...
    董石页阅读 423评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,273评论 0 13
  • 小伙伴大多数还在使用ES5来进行编写,使用ES5这无可厚非,因为ES5毕竟还是主流,速度也更快,但ES6引入的新特...
    cuiyao50阅读 334评论 0 0
  • JavaScript基础语法 主要内容 JavaScript 简介 ​ JavaScript 是一种具有面向对象能...
    一纸油伞阅读 222评论 0 0
  • 本期开始介绍 JavaScript 中的高阶函数,在 JavaScript 中,函数是一种特殊类型的对象,它们是 ...
    编程小世界阅读 509评论 0 0