JS-使用闭包实现add函数

来源:互联网 发布:c获取数组元素个数 编辑:程序博客网 时间:2024/06/06 20:06

无意中看到这样一个题目:利用闭包实现一个add函数,使得
add(1,2)=3,add(1)(2)=3。

以前看过闭包的概念,平时写js时也有意无意的用到过闭包,但是这个题目,一开始看到的时候还真是有点没思路。

不过静下心来,把问题进行了分解,之后就有了答案。

我的代码如下:

function add(x,y){    // 当实参的数量大于等于2时,则此时返回前两个参数之和    if (arguments.length >= 2) {        return x + y;    }    // 当实参的数量为1时,此时返回一个带一个参数的匿名函数,当执行此匿名函数的时候返回外层和内部函数之和    else if (arguments.length == 1) {        return function(z){            return x + z;        }    }    // 如果没有传参数时,则直接返回undefined    else if (arguments.length == 0) {        return undefined;    }}// 执行结果检验add(1,2); // 3add(1)(2); // 3add(1,2,3,4); // 3
1 0